Javascript 围绕箭头体承诺的意外块语句
我使用React、ES6并得到以下错误消息。我尝试了不同的东西,但它不适合我。如果删除“return”,则会出现以下错误: 错误-不要对副作用使用“新建”无新建 如果我这样编码Javascript 围绕箭头体承诺的意外块语句,javascript,promise,ecmascript-6,es6-promise,Javascript,Promise,Ecmascript 6,Es6 Promise,我使用React、ES6并得到以下错误消息。我尝试了不同的东西,但它不适合我。如果删除“return”,则会出现以下错误: 错误-不要对副作用使用“新建”无新建 如果我这样编码 const asyncValidate = (values, dispatch) => { const promise = new Promise(resolve, reject) promise()... 我无法访问构造函数的解析和拒绝 短 如何让这个代码工作 const asyncValidate
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));
});
};
围绕箭头体箭头体样式的意外块语句出错
如果您只有一个表达式,并且希望返回该表达式,则可以缩短箭头函数,例如,如果您希望函数返回传入+1的数字,这是一个缩短版本:
x=>x+1
newpromise(………)
是一个表达式,您希望返回它,因此您可以(而且应该,这就是ESLint抱怨的原因)将其缩短如下:
(values, dispatch) =>
new Promise(...........)
此外,由于validation.availableUserEmail()
本身返回承诺,因此您可以完全删除承诺构造函数(使用承诺构造函数包装承诺是一种反模式),因此您只需执行以下操作:
(values, dispatch) =>
validation.availableUserEmail(.......)
.catch(.........)
如果您只有一个表达式,并且希望返回该表达式,则可以缩短箭头函数,例如,如果您希望函数返回传入+1的数字,这是一个缩短版本:
x=>x+1
newpromise(………)
是一个表达式,您希望返回它,因此您可以(而且应该,这就是ESLint抱怨的原因)将其缩短如下:
(values, dispatch) =>
new Promise(...........)
此外,由于validation.availableUserEmail()
本身返回承诺,因此您可以完全删除承诺构造函数(使用承诺构造函数包装承诺是一种反模式),因此您只需执行以下操作:
(values, dispatch) =>
validation.availableUserEmail(.......)
.catch(.........)
您的第一个代码片段有两个问题。1.
new-new
没有什么意义。2. Promise
接受通过resolve
和reject
的单个回调。您的第二个代码片段根本不需要新承诺
。linting错误只是说从arrow函数体周围删除{}
。也可以从第二个代码段中删除return,因为该函数体是一条语句,并返回其求值结果。最后一个代码块不会解析“new Promise”,但是由于validation.availableUserEmail
明确返回承诺,因此该函数可以简化为const asyncValidate=(value,dispatch)=>validation.availableUserEmail(values.email,dispatch)代码>@loganfsmyth抱歉,我复制代码时出错了。但你的第二个建议是对的。@JaromandaX是对的。我怎样才能给你评分呢?你的第一个代码片段有两个问题。1. new-new
没有什么意义。2. Promise
接受通过resolve
和reject
的单个回调。您的第二个代码片段根本不需要新承诺
。linting错误只是说从arrow函数体周围删除{}
。也可以从第二个代码段中删除return,因为该函数体是一条语句,并返回其求值结果。最后一个代码块不会解析“new Promise”,但是由于validation.availableUserEmail
明确返回承诺,因此该函数可以简化为const asyncValidate=(value,dispatch)=>validation.availableUserEmail(values.email,dispatch)代码>@loganfsmyth抱歉,我复制代码时出错了。但你的第二个建议是对的。@JaromandaX是对的。我怎样才能给你学分呢?谢谢。它甚至可以在没有.catch()的情况下工作,就像JaromandaX早些时候写了一条评论一样。也许第一句话必须改为“…你只有一个表达式,并且你希望返回该表达式,…”@Rodrirokr是的,这似乎是一个打字错误!下次,请随意使用“建议编辑”功能(您还可以获得2分,获得批准的建议编辑;)谢谢。它甚至可以在没有.catch()的情况下工作,就像JaromandaX早些时候写了一条评论一样。也许第一句话必须改为“…你只有一个表达式,并且你希望返回该表达式,…”@Rodrirokr是的,这似乎是一个打字错误!下一次,您可以随意使用“建议编辑”功能(您还可以对已批准的建议编辑获得2分;)