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

时间:2018-03-01 12:15:04

标签: node.js cassandra

这就是我想要做的。

我有一个空数组

    var send_data = [] ;

我正在使用" sync-each"在我之前的node.js的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}]

有没有办法纠正这个问题?

1 个答案:

答案 0 :(得分:1)

您可以使用对您的案例更有意义的map功能:

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