javascript - 围绕箭头主体 Promise 的意外 block 语句

标签 javascript promise ecmascript-6 es6-promise

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

error Do not use 'new' for side effects 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));
  });
};

error Unexpected block statement surrounding arrow body arrow-body-style

最佳答案

如果您只有一个表达式,并且您希望返回该表达式,则可以缩短箭头函数,例如,如果您希望函数返回您传入的数字 + 1,则可以使用此函数是一个缩短版本:x => x + 1

new Promise(............) 是一个单一的表达式,你想返回它,所以你可以 (并且应该,这就是为什么 ESLint 是提示)像这样缩短它:

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

此外,由于 validation.availableUserEmail() 返回 Promise 本身,因此您可以完全删除 Promise 构造函数(用 Promise 构造函数包装 Promise 是一种反模式),所以你可以简单地做:

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

关于javascript - 围绕箭头主体 Promise 的意外 block 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41602976/

相关文章:

javascript - 获取字符串中最后一个 '-' 之后的所有字符

javascript - 无法理解 Promise then 并捕获行为

javascript - 使用 puppeteer 将一段文本分解为对象数组

javascript - 如何在此 React 组件中修复“对象的 "Cannot assign to read only property ' 样式”?

javascript - 将 (object.function) 作为参数传递

javascript - Node.js 从 const 导出函数

javascript - 我如何知道何时使用 JavaScript 中的 for...of 迭代 DOM 集合中的最后一个对象?

javascript - jQuery - 将 html 响应加载到整个页面

javascript - 如何在 JavaScript 框架上实现新层?

javascript - 在异步函数内或 Promise 内设置全局变量的值?