蓝鸟promise.all不尊重结果顺序
我正在使用最新的稳定的蓝鸟:
"bluebird": "~3.4.0",
并用下面的代码:
Promise.all([ParticipantsService.retrieveActiveParticipantsFromTheLocalDb(), EventService.retrieveActiveEventsFromTheLocalDb(), HeatService.retrieveActiveHeatsFromTheLocalDb()]).then( function (results) { var namedResults = {participants: results[0], events: results[1], heats: results[2]}; return res.render('runners/runners', namedResults); }).catch( function (err) { winston.error('Failed to retrieve participants and or event details', err); return res.send(err); });
我希望namedResults总是有正确的顺序排列的元素匹配的承诺数组的顺序,但这是不正确的! 我每次都有不同的顺序。
我假设这是因为它是蓝鸟的文档上说的: http : //bluebirdjs.com/docs/api/promise.all.html除非我读这个错误…
谁能帮忙?
谢谢
你应该可以使用蓝鸟的Promise.props()来做到这一点:
Promise.props({ participants: ParticipantsService.retrieveActiveParticipantsFromTheLocalDb(), events: EventService.retrieveActiveEventsFromTheLocalDb(), heats: HeatService.retrieveActiveHeatsFromTheLocalDb() }).then(res.render.bind(res, 'runners/runners'))