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 关键字...