gpt4 book ai didi

node.js - 如何处理在我想要的之前返回的异步代码?

转载 作者:太空宇宙 更新时间:2023-11-03 23:29:39 25 4
gpt4 key购买 nike

我有一个函数,其中包含类似于...的代码

db.query(query).then(results => {
_.each(results, result => {
db.query(anotherQuery).then(
/* modify result based off anotherQuery results */
});
});
resolve(results);
});

当然,正在发生的事情是,在运行对数据库的第二个请求时,resolve(results)) 被命中,这意味着 promise 未解决以添加额外的内容返回之前的数据。

我可以使用某种模式来避免这种情况吗?我正在使用 Sequelize,它由 Bluebird for Promises 支持。这是我遇到过几次的模式,并且我已经考虑过使用 wait.for但它似乎已经过时并且不支持 Promise。

最佳答案

您可以使用Promise.all Bluebird自身提供的功能:

return db.query(query).then(results => {
const promises = results.map(result => {
return db.query(anotherQuery).then(
/* modify result based off anotherQuery results */
});
});

return Promise.all(promises);
});

关于node.js - 如何处理在我想要的之前返回的异步代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39869462/

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