我试图制作一个方法,等待多个承诺得到满足(更容易使用此应用程序的承诺)。我认为async/await
包中的Promise
可以完成这项工作。我做了以下功能。
execute: Promise.async(function (routine) {
let listener = Meteor.bindEnvironment(data => console.log(data));
this.on('data', listener);
Promise.await(Promise.all([
this.sendCommand('startup'),
this.sendCommand('begin process'),
this.awaitMessage('ok')
]).finally(res => {
this.removeListener('data', listener);
}));
});
这不起作用,因为它立即返回。但是,如果我从函数中删除Promise.async
,它似乎完全正常,就像将来包装的函数一样。
这是为什么?通常,在使用es7 async / await的节点应用程序中,它看起来像这样:
let login = async function () {
let user = await getUserRecord();
return await login(user);
}
那么,我在流星上做错了吗?