Mat*_*t K 26 javascript ecmascript-harmony ecmascript-6 ecmascript-7
鉴于一系列承诺,在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
}
Run Code Online (Sandbox Code Playgroud)
结果是正确的,但我仍然在做a forEach和a then将已解决的承诺转化为结果.这对我来说似乎不对.有更干净的方式吗?
log*_*yth 38
正如您提交的问题中所提到的,核心问题是await*不再是一件事并已被删除.不幸的是,它没有在Babel 6中正确地抛出语法错误,并且基本上被视为正常await.
你需要明确地
let [p1, p2] = await Promise.all([
System.import('./package1.js'), System.import('./package2.js')]);
Run Code Online (Sandbox Code Playgroud)