簡體   English   中英

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

[英]Sails.js how to use for loop in async.series([ ])?

我想在我的服務中使用async.series([]),然后將結果返回給Controller。 但是,似乎帶有async.series的可選回調函數不會等到任務完成后才返回控制器。

 /* 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));
})

這將確保在調用屬於您的series函數的回調之前迭代每個結果。

我使用async.waterfall代替了我之前發布的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM