围绕箭头体Promise的意外的块语句

时间:2017-01-12 00:02:47

标签: javascript promise ecmascript-6 es6-promise

我使用React,ES6并收到以下错误消息。我尝试了here中不同的东西,但它不适合我。如果我删除“return”,我会收到此错误:

  

错误不要将'new'用于副作用no-new

如果我这样编码

const asyncValidate = (values, dispatch) => {
  const promise = new Promise(resolve, reject)
  promise()...

我无法访问建设者的解析和拒绝。

如何使此代码正常工作?

const asyncValidate = (values, dispatch) => {
  return new Promise((resolve, reject) => {
    validation.availableUserEmail(values.email, dispatch)
    .catch(err => reject(err));
  });
};
  

错误围绕箭头主体arrow-body-style

的意外阻止语句

1 个答案:

答案 0 :(得分:2)

如果你只有一个表达式,并希望返回该表达式,则可以缩短箭头功能,例如,如果你想让一个函数返回你传入的数字+ 1,这个是一个缩短版本:x => x + 1

new Promise(............)是一个单独的表达式,你想要返回它,所以你可以(并且应该,这就是ESLint抱怨的原因)缩短它如下:

(values, dispatch) =>
  new Promise(...........)

此外,因为validation.availableUserEmail()本身返回一个Promise,你可以完全删除Promise构造函数(用Promise构造函数包装一个Promise是一个反模式),所以你可以这样做: / p>

(values, dispatch) =>
  validation.availableUserEmail(.......)
    .catch(.........)