诺言。 return resolve()和resolve()有什么区别?
某个地方读了这个例子:
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
会创建一个成功的承诺状态,但如果没有使用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
})
})
它与return
中的正常function
声明相同,与承诺无关
诺言。 return resolve()和resolve()有什么区别?
某个地方读了这个例子:
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
会创建一个成功的承诺状态,但如果没有使用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
})
})
它与return
中的正常function
声明相同,与承诺无关