发生这种情况是因为Node.js的异步特性,还是有其他方法可以实现这一点?

发生这种情况是因为Node.js的异步特性,还是有其他方法可以实现这一点?,node.js,cassandra,Node.js,Cassandra,这就是我想做的 我有一个空数组 var send_data = [] ; 我使用node.js的“sync each”npm库,之前我使用map回调函数进行迭代,但遇到了相同的情况 这是我的密码 var each = require('sync-each'); client.execute(someQuery,[value],(err,data) => { var items = data.rows; each(items,(items,next

这就是我想做的

我有一个空数组

    var send_data = [] ;
我使用node.js的“sync each”npm库,之前我使用map回调函数进行迭代,但遇到了相同的情况

这是我的密码

    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}]
有什么方法可以纠正这个问题吗?

您可以使用对您的情况更有意义的功能:

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

console.log(发送_数据)您的方法是正确的,但它不适用于我的项目,因为我想添加多个键值对,并且该值将是我的数据库的查询输出。var send_data=items.map((item)=>({value:item.message,flag:item.type});主要问题是node.js的异步特性。它首先执行所有的迭代,然后执行所有复杂的数据库查询,这就是为什么我得到了混乱的值,但为了解决这个问题,我使用了npm的sort by library,并使用这个库根据时间进行排序。