gpt4 book ai didi

javascript - Sails.js 如何在 async.series([ ]) 中使用 for 循环?

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

我想在我的服务中使用async.series([]),然后将结果返回给 Controller 。然而,async.series 的可选回调函数似乎不会等到任务完成后再返回 Controller 。

/* In Services */
getFunction: function(userInput, callback) {
var results = {};

async.series([
//1: This function get a list JSON dataset of id and other attributes
function(callback) {
//Call a function to call API by using the userInput, return function(error, JSONdataset1)
//If error, return callback(error)
//Else results = JSON.parse(dataset1);
callback(null, JSON.stringify(results));
},
//2: This function get a JSON object by input the id result from above function
//I am not sure I should use for loop here as well, can someone advise me please!
function(callback) {
for(var result in results) {
//Call another function to call API by using the id in the returned results, return function(error, JSONdataset2)
//If error, return callback(error)
//Else
var aName = JSON.parse(JSONdataset2);
results[result].name = JSON.parse(JSON.stringify(aName.attribute));
}
callback(null, JSON.stringify(results));
}
],
//res = [JSON.stringify(results), JSON.stringify(results)] and result should return to Controller
//The problem is the callback doesn't wait above functions finish before return.
function(error, res) {
if(error) { return callback(error, null); }
else { return callback(null, res); }
});

}

最佳答案

在类似的情况下,我会使用 async.each()函数,例如

async.each(results, function(result){
var aName = JSON.parse(JSONdataset2);
results[result].name = JSON.parse(JSON.stringify(aName.attribute));
callback();
}, function(err){
if(err) callback(err,null);
else callback(null, JSON.stringify(results));
})

这将确保在调用属于您的系列函数的回调之前迭代每个结果。

关于javascript - Sails.js 如何在 async.series([ ]) 中使用 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37418999/

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