gpt4 book ai didi

javascript - Lodash: _.forEach 函数

转载 作者:可可西里 更新时间:2023-11-01 02:18:25 24 4
gpt4 key购买 nike

我正在尝试使用 lodash forEach具有调用 mongo 数据库的嵌套函数的方法。

var jobs = [];
_.forEach(ids, function(id) {
JobRequest.findByJobId(id, function(err, result) {
if(err) callback(err);
jobs.push(result);
});
});

callback(null, jobs);

我遇到了问题,因为 forEach 和回调将在调用内部函数之前运行。我该如何解决这个问题?

我希望在 for each 和 inner 函数完成后调用回调。

最佳答案

另一种方法是将所有内容都包装到 promise 中,在这种情况下,作业结果将按正确顺序推送到数组中:

var promises = ids.map(function(id) {
return new Promise(function(resolve, reject) {
JobRequest.findByJobId(id, function (err, result) {
if (err) reject(err);
resolve(result);
});
});
});

Promise.all(promises).then(function(jobs) {
callback(null, jobs);
}, callback);

// or shorter: Promise.all(promises).then(callback.bind(null, null), callback);

请注意,您还需要处理 JobRequest.findByJobId 请求失败时的潜在情况,使用 promises 非常简单:只需将 callback 作为错误回调传递给 Promise.all

关于javascript - Lodash: _.forEach 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32385040/

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