javascript - promise 。 return resolve() 和 resolve() 有什么区别?

标签 javascript node.js promise

在某处读过这个例子:

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)
  })
})

有区别吗?

最佳答案

return resolve() 将像正常的 return 一样结束函数执行,这取决于您的代码流,如果您不想要或不需要函数中还有要执行的代码,然后使用 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
  })
})

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

记住 resolve()reject() 创建promise的状态,一旦创建状态就不能改变了,.then.catch 处理程序用于进一步执行, 使用 return 完全取决于您的代码流。如果您不想在该 block 中执行更多代码,则 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 无关

关于javascript - promise 。 return resolve() 和 resolve() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42349338/

相关文章:

javascript - 需要帮助将 jQuery 对象转回字符串

javascript - 在 Javascript 中触发 Keyup 事件

javascript - javascript函数中void this的目的是什么

C++ 线程和 Promise : attempting to reference a deleted function

javascript - 如何使用setInterval或setTimeOut同步执行?

javascript - 成功登录后在同一窗口中打开 target.html 页面

javascript - 为什么我会收到 JavaScript Date 对象的错误?

javascript - 我使用 WebStorm 进行 Node.js 开发,但核心模块不在 JS 库中

javascript - JSDOM 未在 Node 中加载脚本文件

arrays - 在有希望的数组中推送到数组在 promise 之外是空的