发生这种情况是因为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,并使用这个库根据时间进行排序。