ES5中Promise.all带来的意外破坏

时间:2019-05-13 07:01:46

标签: javascript ecmascript-6 es6-promise eslint ecmascript-5

我正在使用Promise.all来调用一组Promises。我们的开发版本仅支持ES5。因此,当我使用以下语句时,ESLINT会引发错误:

Promise.all([
  service.document.getDocumentByPath( grantorPath ),
  service.document.getDocumentByPath( synonymPath ),
  service.document.getDocumentByPath( templatePath )
]).then(function([grantorDoc, synonymDoc, templateDoc]) {

ESLint error : Unexpected destructuring. eslint(es5/no-destructing)

我想

  1. 删除ESLINT错误而不触碰eslint规则。
  2. 使用在解决承诺后得到的结果(grantorDoc,synonymDoc,templateDoc)。

1 个答案:

答案 0 :(得分:0)

您的ESLint插件forbids destructuring。由于听起来您的代码需要与ES5兼容,因此请在函数的第一行声明这些变量:

Promise.all([
  service.document.getDocumentByPath( grantorPath ),
  service.document.getDocumentByPath( synonymPath ),
  service.document.getDocumentByPath( templatePath )
]).then(function(result) {
  var grantorDoc = result[0];
  var synonymDoc = result[1];
  var templateDoc = result[2];
  // ...
});

(也就是说,如果您希望能够读写简明易懂的代码,那么在ES6 +中编写代码,然后稍后使用Babel将代码自动转译到ES5可能更有意义)

请确保您的环境支持Promise.all,因为它是ES6的功能-如果还没有,请使用polyfill。