【问题标题】:Promise. What is the difference between return resolve() and resolve()?承诺。 return resolve() 和 resolve() 有什么区别?
【发布时间】:2017-07-10 00:20:32
【问题描述】:

在某处读过这个例子:

return new Promise( (resolve, reject) => {
  fs.readFile(file, (err, data) => {
    if (err) reject(err)
    return resolve(data)
  })
})

但我通常这样做:

return new Promise( (resolve, reject) => {
  fs.readFile(file, (err, data) => {
    if (err) reject(err)
    resolve(data)
  })
})

有区别吗?

【问题讨论】:

  • 这里不会有什么不同。
  • 我认为在第一种情况下,你可以链接,但在第二种情况下,你不能

标签: javascript node.js promise


【解决方案1】:

return resolve() 将像正常的return 一样结束函数执行,这取决于您的代码流,如果您不希望或不需要在您的函数中执行更多代码,则使用@ 987654323@退出函数

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

只有resolve 会创建一个成功的promise 状态,但是当return 没有被使用时会执行代码执行。

记住resolve()reject()创建promise的状态,一旦创建状态就不能改变它们,.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
  })
})

它与function 中的普通return 语句相同,与promise 无关

【讨论】:

  • 展示它们在.then 状态创建时的反应会很有用——即一个会失败,一个不会。
  • 如果有错误,那么我们调用reject(error) 并且没有返回那里,那么下一条语句是否会被执行-return resolve(data)?如果是,那么它的影响是什么?
猜你喜欢
  • 2019-01-20
  • 2019-05-22
  • 2011-11-30
  • 2017-05-17
  • 2021-05-04
  • 2018-01-06
  • 1970-01-01
  • 2015-05-07
  • 2014-05-24
相关资源
最近更新 更多