【发布时间】:2016-03-26 18:17:09
【问题描述】:
给定一系列 Promise,在 ES7 中获取结果的惯用方式是什么?
这是我想做的:
async function getImports() {
let imports = [System.import('./package1.js'), System.import('./package2.js')];
let promises = await* imports;
let results = [];
await promises.forEach(val => val.then(data => results.push(data))); //seems hacky
console.log(results); // array of 2 resolved imports
}
结果是正确的,但我仍在执行forEach 和then 将已解决的承诺转化为结果。这对我来说似乎不正确。有没有更清洁的方法?
【问题讨论】:
-
promises不是已经包含解析值了吗?至少那是let result = await* [Promise.resolve(1), Promise.resolve(2)];为我做的? -
是的,
promises中的每个条目都包含一个[[PromiseValue]],但如果没有forEach和then,我不知道如何访问它们 -
这很有趣。我刚刚尝试了上面由 babel 转换的内容,它给了我正确的值。你用什么转译?
-
我正在使用 babel 6。你是说
promises返回结果而不是承诺? -
async/await的全部意义在于不再手动使用 Promise。它隐藏在异步函数和等待异步函数之后。
标签: javascript ecmascript-6 ecmascript-harmony ecmascript-2016