请在某个地方阅读此示例:
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)
})
})有什么不同吗?
发布于 2017-02-21 00:18:05
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完全取决于您的代码流。如果您不想在该块中执行更多代码,那么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无关
https://stackoverflow.com/questions/42349338
复制相似问题