bluebird 的 'each' 函数中的随机顺序
Random order in bluebird's 'each' function
我有来自数据库的消息数组 'results',现在我也想从数据库中为这条消息添加昵称。我从数据库接收的数组是按日期排序的,但是当我使用这段代码时,结果是随机排序的。
Promise.each(results, function(message) {
users.db.find({id64: message.id64}).then(function(user) {
message.nick = user[0].nick;
socket.emit('chat message toClient', message);
})
})
我可能从错误的角度来处理这个问题。
根据设计,对已排序数据执行异步操作不会以相同顺序产生结果。您可以在另一端按日期重新排序,或者不要尝试异步执行操作。
同步:
results.forEach(results, function(message) {
users.db.find({id64: message.id64}).then(function(user) {
message.nick = user[0].nick;
socket.emit('chat message toClient', message);
})
})
我想你在 users.db 之前需要一个 return 关键字...
我有来自数据库的消息数组 'results',现在我也想从数据库中为这条消息添加昵称。我从数据库接收的数组是按日期排序的,但是当我使用这段代码时,结果是随机排序的。
Promise.each(results, function(message) {
users.db.find({id64: message.id64}).then(function(user) {
message.nick = user[0].nick;
socket.emit('chat message toClient', message);
})
})
我可能从错误的角度来处理这个问题。
根据设计,对已排序数据执行异步操作不会以相同顺序产生结果。您可以在另一端按日期重新排序,或者不要尝试异步执行操作。
同步:
results.forEach(results, function(message) {
users.db.find({id64: message.id64}).then(function(user) {
message.nick = user[0].nick;
socket.emit('chat message toClient', message);
})
})
我想你在 users.db 之前需要一个 return 关键字...