gpt4 book ai didi

javascript - 使用异步 waterfall 时模型的响应未定义

转载 作者:行者123 更新时间:2023-11-30 14:37:03 25 4
gpt4 key购买 nike

我正在尝试将数据返回到我的 View 模板。我正在使用 async.waterfall 来执行此操作。只有一个问题,类的结果总是undefined

Controller :

Profile().then(response => {
console.log(response);
});

型号:

module.exports = async function Profile() {
let waterfall = await Async.waterfall([
function(callback) {
db.getOneWhere('users', 'username', global.req.params.username, ["username"]).then(result => {
callback(null, result);
});
},
function(arg1, callback) {
db.getOneWhere('users', 'username', 'admin', ["username"]).then(result2 => {
let ok = {
arg1,
result2
}
callback(null, ok);
});
}
], function (err, result) {
let tmp = [];
Object.keys(result).forEach(function(k) {
tmp = [...tmp, ...result[k]];
});

return {'data': tmp};
});

return waterfall;
}

let waterfall 始终是 undefined 因此来自 Profile.then()... 的响应也是未定义的。为什么它不起作用,如何修复?

最佳答案

您可以将 Async.waterfall 包装到 Promise 中,然后 waterfall 的回调只会执行拒绝/解决 promise 。然后创建的 Promise 将使用 waterfall 的结果解决,或者如果发生错误则被拒绝。

module.exports = async function Profile() {
let result = await new Promise((resolve, reject) => {
Async.waterfall([ /*....*/ ], (err, result) => {
if (err) {
reject(err)
} else {
resolve(result)
}
})
})

let tmp = [];
Object.keys(result).forEach(function(k) {
tmp = [...tmp, ...result[k]];
});

return {
'data': tmp
};
}

关于javascript - 使用异步 waterfall 时模型的响应未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50279102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com