当前位置:  开发笔记 > 编程语言 > 正文

ES7使用await生成器从一组promise中获取结果

如何解决《ES7使用await生成器从一组promise中获取结果》经验,为你挑选了1个好方法。

鉴于一系列承诺,在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
}

结果是正确的,但我仍然在做a forEach和a then将已解决的承诺转化为结果.这对我来说似乎不对.有更干净的方式吗?



1> loganfsmyth..:

正如您提交的问题中所提到的,核心问题是await*不再是一件事并已被删除.不幸的是,它没有在Babel 6中正确地抛出语法错误,并且基本上被视为正常await.

你需要明确地

 let [p1, p2] = await Promise.all([
          System.import('./package1.js'), System.import('./package2.js')]);


规格始终是最好看的地方.建议的规范语法在https://github.com/tc39/ecmascript-asyncawait/blob/master/spec/syntax.html中,并且只定义了`await UnaryExpression`.
推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有