【问题标题】:nested for loop in node js with asynchronous在节点js中使用异步嵌套for循环
【发布时间】:2017-03-16 00:35:15
【问题描述】:

我有userCurrentContainer = [[],[{"1":"xyz"},{"2":"abc"}],[{"1":"xyz"}],[]]

我想按键分组,所以输出看起来像:{ 1: xyzxyz, 2: abc}

我正在使用异步库。 我理解分组逻辑.. 但我的问题是当一切都完成后我会回调.. 但它是在调用之前..

function grupbyContainerId(userCurrentContainer,callback){
            var track=0;
            var temp=new Array();
            async.eachSeries(userCurrentContainer, function (key,callback1) {
                track=track+1

                if(key.length>0){
                    var innertrack=0;
                    async.eachSeries(key, function (key1,callback2) {
                         innertrack=innertrack+1
                         //logic here 

                         if(track>=userCurrentContainer.length&&innertrack,key.length>=key.length){
                            console.log("if calledd ---------->");
                            callback(null,temp)
                         }

                        callback2();
                    })
                }

                callback1();

            });

        }

【问题讨论】:

    标签: javascript node.js asynchronous


    【解决方案1】:

    请参考http://caolan.github.io/async/docs.html#eachSeries 它应该有 3 个参数。试试这样的:

    function doSomeAction() {
    var someNestedArray = [[],[{key:'value1'}],[],[{key:'value2'}]];
    async.eachSeries(someNestedArray, function (item, next) {
        async.eachSeries(item, function (deepObj, cb) {
            console.log(deepObj)
            cb()
        }, function (err, result) {
            next();
        })
    
    }, function (err, res) {
        console.log('AllWorkDone');
    })}
    

    【讨论】:

    • 虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
    【解决方案2】:

    从您提供的基本输入/输出示例来看,我认为使用reduce 可能更适合您。例如

    const input = [[],[{"1":"xyz"},{"2":"abc"}],[{"1":"xyz"}],[]];
    const output = input.reduce(function (acc, value) {
      for (let val of value) {
        acc[Object.keys(val)] = val[Object.keys(val)] + (acc[Object.keys(val)] || '');
      }
      return acc;
    }, {});
    console.log(output);
    

    【讨论】:

      猜你喜欢
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      • 2014-12-14
      • 2020-12-02
      • 2016-12-26
      • 1970-01-01
      相关资源
      最近更新 更多