与Promise的ESLint一致返回错误

时间:2016-09-10 08:57:10

标签: javascript ecmascript-6 es6-promise eslint

我在以下代码的第一行收到consistent-return ESLint error

return new Promise((resolve, reject) => { 
  if (condition) {
    asyncMethod.then(data => {
      return resolve(syncMethod());
    }, err => reject(err));
  } else {
    return resolve(syncMethod());
  }
});

返回不一致的缺失情况是什么?如何修复?

2 个答案:

答案 0 :(得分:1)

您不会在此if块中返回值:

if (condition) {
  asyncMethod.then(data => {
    return resolve(syncMethod());
  }, err => reject(err));
}

这意味着如果undefined为true,函数将返回condition,但如果为false,则返回resolve函数的结果。

答案 1 :(得分:1)

ESlint没有注意到这一点,但你应该avoid the Promise constructor 一起完成!

return (condition ? asyncMethod : Promise.resolve()).then(data => syncMethod());
  

返回不一致的缺失情况是什么?

你并没有return来自promise构造函数中if块的任何东西。或者更确切地说,您不应return阻止resolve()块中else调用的结果。