我正在使用最新稳定的蓝鸟:
"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总是具有正确的元素顺序,这些元素与promises数组的顺序相匹配,但事实并非如此!我每次都有不同的订单。
我之所以这么做是因为它是蓝鸟文档中的内容:http://bluebirdjs.com/docs/api/promise.all.html 除非我读错了......
有人可以帮忙吗?
由于
答案 0 :(得分:2)
你应该能够使用bluebird的Promise.props():
Promise.props({
participants: ParticipantsService.retrieveActiveParticipantsFromTheLocalDb(),
events: EventService.retrieveActiveEventsFromTheLocalDb(),
heats: HeatService.retrieveActiveHeatsFromTheLocalDb()
}).then(res.render.bind(res, 'runners/runners'))