这是因为Node.js的异步性质还是有任何其他方法来实现这一点?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这是因为Node.js的异步性质还是有任何其他方法来实现这一点?相关的知识,希望对你有一定的参考价值。

这就是我想要做的。

我有一个空数组

    var send_data = [] ;

我在使用node.js的“sync-each”npm库之前,我正在使用地图回调函数进行迭代,但遇到了相同的情况。

这是我的代码。

    var each = require('sync-each');

    client.execute(someQuery,[value],(err,data) => {
    var items = data.rows;
    each(items,(items,next) => {
       // here I am performing some if-else queries and some Cassandra database queries and then pushing the value to my array send_data.
    if(items.type == true) {
       send_data.push({ value: items.message,flag:true });
    }else{
    send_data.push({value:items.message,flag:false});
    }
  },(err,transformedItems)=>{
      if(err){
          console.log(err);
      }
    });
 });

我的程序运行良好而没有出现任何错误,但是当我调用最终输出时,我得到了未列出的数组值列表

     [{value:1},{value:3},{value:2},{value:4}]

有没有办法纠正这个?

答案

您可以使用map函数,这对您的案例更有意义:

 var items = [1,2,3,4];
 var send_data = items.map((item)=>({value:item}));
 console.log(send_data);

以上是关于这是因为Node.js的异步性质还是有任何其他方法来实现这一点?的主要内容,如果未能解决你的问题,请参考以下文章

Node.JS:forEach 与 for 循环异步性质

Node js中Promise是同步还是异步

Node.js 与 .net 中的异步/等待

node.js 的 console.log 是异步的吗?

node.js 中的回调是始终异步还是始终同步?或者它们可以是“有时是一个,有时是另一个”?

如何在端口 80 上运行 Node.js?