如何使用Async推送到外部阵列。同时

时间:2017-12-04 07:37:42

标签: javascript arrays json node.js asynchronous

我试图从服务中检索数据并将结果存储在一个数组中以便存储为JSON,由于我使用的数据结构,我需要嵌套{{1以这种方式:

代码:

Async.Whilst

正如我所提到的,我希望一个Object将它保存在我的数据库中的JSON中,如下所示:

预期结果:

var async = require('async');
var response = {};
async.whilst(function(){
    if(category <= externalCategory){
        category++;
        return true;
    }else{
        return false;
    }
},function(outerCallback){
    response[category] = [];
    async.whilst(function(){ 
        if(data == "pass"){
            return true;
        }else{
            //retry
            return false;
        }
    },function(callback) {
        var data = {
            //Retrieved data
        };
        response[category].push(data);   
        callback();

    },function () {
        outerCallback();
    });
},function(){
    next(null, response);
}); 

但是,我继续让所有的Object填充我推送的数组的最后一个值:

实际结果:

response:{
    0:[dataA, dataB],
    1:[dataC, dataD, dataE],
    2:[dataF],
    3:[dataG, dataH]
}

我是Node.js中asynchronus编程的新手,所以我对嵌套异步函数以及为什么会出现这种情况感到困惑,有什么帮助或替代方案吗?

1 个答案:

答案 0 :(得分:0)

我希望您的问题可以通过使用async获取索引值的'eachOfSeries'来解决,这样您就可以避免嵌套异步并且eachOfSeries是串行操作。所以不要担心asynchronus

https://caolan.github.io/async/docs.html#eachOfSeries