Helper函数不返回响应,但用函数显示结果



我有这个辅助函数:

const listFileKeysInSpaceByPrefix = async (prefix) => {
var params = {
Bucket: process.env.S3_BUCKET_NAME,
Prefix: prefix,
};
let fileKeys;
await s3.listObjects(params, function (err, data) {
if (err) {
console.log(err, err.stack);
next(err);
}
let keys = [];
data["Contents"].forEach(function (obj) {
keys.push(obj.Key);
});
console.log("key1", keys);
fileKeys = keys;
});
return fileKeys;
};

我在路由中像这样调用helper函数:

const keyToBeDeleted = await listFileKeysInSpaceByPrefix(uploadSpaceFolder);
console.log("keys",keyToBeDeleted);

在我的控制台上的结果是这样的:

keys undefined
key1 ['adamter/rr0.png', 'adamter/rt0.png']

当我调用函数时,我需要在我的响应中获得数组,但我似乎找不到解决这个问题的方法。

Try withcallbackfunction。

const listFileKeysInSpaceByPrefix = (prefix, callBackFn) => {
var params = {
Bucket: process.env.S3_BUCKET_NAME,
Prefix: prefix,
};
s3.listObjects(params, function (err, data) {
if (err) {
console.log(err, err.stack);
next(err);
}
let keys = [];
data["Contents"].forEach(function (obj) {
keys.push(obj.Key);
});
console.log("key1", keys);
callBackFn(keys);
});
};
function yourFunction() { 
function callBackFn(keyToBeDeleted) { 
// access keyToBeDeleted 
// add your logic here 
}
listFileKeysInSpaceByPrefix(uploadSpaceFolder, callBackFn); 
}