web-dev-qa-db-fra.com

Promettre. Quelle est la différence entre return resol () et resol ()?

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?

16
ivanesi

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

27
p0k8_

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

0
vnglst