quelque part lu cet exemple:
return new Promise( (resolve, reject) => {
fs.readFile(file, (err, data) => {
if (err) reject(err)
return resolve(data)
})
})
mais je fais habituellement ceci:
return new Promise( (resolve, reject) => {
fs.readFile(file, (err, data) => {
if (err) reject(err)
resolve(data)
})
})
y a-t-il une différence?
return resolve()
terminera simplement l’exécution de la fonction en tant que return
normal, qui dépend simplement du flux de votre code. Si vous ne voulez pas ou n’avez plus besoin de code dans votre fonction, alors utilisez une return
pour quitter la fonction.
return new Promise( (resolve, reject) => {
fs.readFile(file, (err, data) => {
if (err) reject(err)
return resolve(data)
console.log('after return') // won't execute
})
})
seul resolve
créera un état de promesse réussi, mais exécutera l’exécution de code s’il en existe une lorsque return
n’est pas utilisé.
Rappelez-vous que resolve()
et reject()
créent l'état de promesse, ils ne peuvent plus être modifiés une fois que l'état est créé, les gestionnaires .then
et .catch
sont utilisés pour une exécution ultérieure. L'emploi de return
dépend entièrement de votre flux de code. Si vous ne voulez pas exécuter plus de code dans ce bloc, alors return resolve()
return new Promise( (resolve, reject) => {
fs.readFile(file, (err, data) => {
if (err) reject(err)
resolve(data)
console.log('after return') // will execute
})
})
c'est juste comme une déclaration return
normale dans une function
et n'a rien à voir avec une promesse
Cela ne fait pas de différence ici, mais si vous voulez faire des choses après la résolution, voyez par exemple les exemples au bas de la page MDN: https://developer.mozilla.org/en/docs/Web/JavaScript/Référence/Global_Objects/Promesse/résoudre