承诺。 return resolve() 和 resolve() 有啥区别?
Posted
技术标签:
【中文标题】承诺。 return resolve() 和 resolve() 有啥区别?【英文标题】: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)
)
)
有区别吗?
【问题讨论】:
这里不会有什么不同。 我认为在第一种情况下,你可以链接,但在第二种情况下,你不能 【参考方案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)
?如果是,那么它的影响是什么?以上是关于承诺。 return resolve() 和 resolve() 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章