javascript - 辅助函数不返回响应,但使用函数显示结果
问题描述
我有这个辅助功能:
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;
};
我在这样的路线中调用了辅助函数:
const keyToBeDeleted = await listFileKeysInSpaceByPrefix(uploadSpaceFolder);
console.log("keys",keyToBeDeleted);
然而,我控制台上的结果如下所示:
keys undefined
key1 ['adamter/rr0.png', 'adamter/rt0.png']
当我调用函数时,我需要在响应中获取数组,但我似乎没有找到解决方法。
解决方案
尝试使用回调函数。
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);
}
推荐阅读
- javascript - React 无法在控制台中打印表单数据
- grafana - Nagios RRD数据库如何导入Influxdb
- onelogin - 从 OneLogin 获取不完整的用户详细信息
- bash - 用于计算 AWS IAM 访问密钥使用期限的 shell 脚本
- ruby-on-rails - rdkafka 0.8.1 错误:无法构建 gem 原生扩展
- angular - 出现错误:“mat-date-range-picker-actions”不是已知元素
- java - 谁能解释为什么这个程序显示 IllegalMonitorStateException?
- javascript - 未捕获的 TypeError:onPageChange 不是 Material UI 中 DataGrid 的函数
- ojdbc - 使用包含 rownum 的选择查询更新 ResultSet
- asp.net-mvc - 使用实体框架将数据保存到数据库后无法清除文本框值并打印成功消息