gpt4 book ai didi

javascript - 在 forEach 中进行异步调用

转载 作者:搜寻专家 更新时间:2023-10-31 23:00:41 25 4
gpt4 key购买 nike

我正在尝试遍历对象数组并使用 Node.js 中的异步函数在这些对象中添加一些内容。

到目前为止我的代码是这样的:

var channel = channels.related('channels');
channel.forEach(function (entry) {

knex('albums')
.select(knex.raw('count(id) as album_count'))
.where('channel_id', entry.id)
.then(function (terms) {
var count = terms[0].album_count;
entry.attributes["totalAlbums"] = count;
});

});
//console.log("I want this to be printed once the foreach is finished");
//res.json({error: false, status: 200, data: channel});

我怎样才能在 JavaScript 中实现这样的事情?

最佳答案

既然您已经在使用 promises,最好不要将这个比喻与 async 混在一起。相反,只需等待所有 promise 完成:

Promise.all(channel.map(getData))
.then(function() { console.log("Done"); });

getData 是:

function getData(entry) {
return knex('albums')
.select(knex.raw('count(id) as album_count'))
.where('channel_id', entry.id)
.then(function (terms) {
var count = terms[0].album_count;
entry.attributes["totalAlbums"] = count;
})
;
}

关于javascript - 在 forEach 中进行异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29178868/

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