【问题标题】:Async each series not showing proper result, display one element of array instead of all elements异步每个系列都没有显示正确的结果,显示数组的一个元素而不是所有元素
【发布时间】:2019-12-17 16:52:42
【问题描述】:

我是 Nodejs 的新手,使用 async.eachSeries 来迭代数组,当数组有四个元素时,它只在最终响应中显示一个元素,并且还向数组添加了名为“支付类型”的新变量,它也没有分配。
我想将数组中的所有元素显示为最终输出。下面是代码,这种方法是否正确?我也看到它首先显示 console.log 中的所有元素,但在邮递员中它只显示一个数据。如何解决此问题以在 async.eachSeries 完成后将所有数组发送给邮递员。

代码:

let members=[];
 Utils.async.each(response,(rowTrainers, callback) => {
                        var result=JSON.parse(JSON.stringify(rowTrainers));
             rowTrainers.dataValues.payment_type =  "Cashfree";
                            return callback();
                         }) ,err=>{
                            if(err){
                                console.error("Error: ", err);
                                cb(err, []); 
                            }else{
              members=rowTrainers;
                            Utils.sendResponse(1, rowTrainers , "success", q)

                            }
                        }

实际输出:

{
    "message": [
        {
             "firstName": “Abc”,
            "lastName": "xyzzy”,
       “age”:24
        }
    ]
}

预期输出:

{
    "message": [
        {
            "firstName": “Abc”,
            "lastName": “xyzzy”,
        “age”:24,
“payment_type”:”Online”
        },
{
            "firstName": “def”,
            "lastName": “pmo”,
“age”:23,
“payment_type”:”Online”

        },
{
            "firstName": “per”,
            "lastName": “abc”,
      “age”:23,
“payment_type”:”Online”

        }
    ]
}

【问题讨论】:

    标签: javascript node.js async.js


    【解决方案1】:

    尝试以下方法:

      let members=[];
     Utils.async.each(response,(rowTrainers, callback) => {
        var result=JSON.parse(JSON.stringify(rowTrainers));
                    rowTrainers.dataValues.payment_type =  "Cashfree";
                        members.push(rowTrainers);
                        callback();
                        } ,err=>{
                        if(err){
                            console.error("Error: ", err);
                            cb(err, []); 
                        }else{              
                        Utils.sendResponse(1, members , "success", q)
    
                        }
                    });
    

    【讨论】:

    • 感谢您的快速回复,它可以正常工作,但不能在 else 循环中打印。如果您在 err 块之前打印,它会显示数据。
    • @Nits6029 代码中存在一些语法错误。我已经编辑了代码。检查它是否工作?见)结尾
    • @Nits6029 在 else 块中打印什么??
    • @Subburaj.It's not going to else block.just print hello world in console.log is not shown.
    • @Nits6029 它进入错误块,所以打印并查看错误并解决它。如果它解决了问题,也接受答案
    猜你喜欢
    • 1970-01-01
    • 2020-04-15
    • 2018-05-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 2023-03-11
    相关资源
    最近更新 更多