诺言.return resolve()和resolve()有什么区别?

iva*_*esi 26 javascript node.js promise

某个地方读了这个例子:

return new Promise( (resolve, reject) => {
  fs.readFile(file, (err, data) => {
    if (err) reject(err)
    return resolve(data)
  })
})
Run Code Online (Sandbox Code Playgroud)

但我通常这样做:

return new Promise( (resolve, reject) => {
  fs.readFile(file, (err, data) => {
    if (err) reject(err)
    resolve(data)
  })
})
Run Code Online (Sandbox Code Playgroud)

有区别吗?

p0k*_*k8_ 37

return resolve()只会将函数执行作为正常结束return,这只取决于代码的流程,如果你不想或不需要函数中的任何代码来执行,那么使用a return来退出函数

return new Promise( (resolve, reject) => {
  fs.readFile(file, (err, data) => {
    if (err) reject(err)
    return resolve(data)
    console.log('after return') // won't execute
  })
})
Run Code Online (Sandbox Code Playgroud)

只会resolve创建一个成功的promise状态,但是如果return没有使用则会执行代码执行.

记住resolve()reject()创建承诺状态,一旦创建状态就不能更改它们,.then并且.catch处理程序用于进一步执行,return完全取决于您的代码流.如果您不想在该块中执行更多代码,那么return resolve()

return new Promise( (resolve, reject) => {
  fs.readFile(file, (err, data) => {
    if (err) reject(err)
    resolve(data)
    console.log('after return') // will execute
  })
})
Run Code Online (Sandbox Code Playgroud)

它与a中的正常return语句相同,function与promise无关

  • 如果出现错误,那么我们调用“reject(error)”并且没有返回,那么下一条语句是否会被执行——“returnsolve(data)”?如果是,那么它的影响是什么? (2认同)