webentwicklung-frage-antwort-db.com.de

Versprechen. Was ist der Unterschied zwischen return resol () und resol ()

lesen Sie irgendwo dieses Beispiel:

return new Promise( (resolve, reject) => {
  fs.readFile(file, (err, data) => {
    if (err) reject(err)
    return resolve(data)
  })
})

aber ich mache das normalerweise:

return new Promise( (resolve, reject) => {
  fs.readFile(file, (err, data) => {
    if (err) reject(err)
    resolve(data)
  })
})

ist da ein Unterschied?

16
ivanesi

return resolve() beendet einfach die Funktionsausführung als normale return, die nur vom Code-Fluss abhängt. Wenn Sie nicht mehr Code in Ihrer Funktion ausführen möchten, müssen Sie die Funktion mit einer return beenden

return new Promise( (resolve, reject) => {
  fs.readFile(file, (err, data) => {
    if (err) reject(err)
    return resolve(data)
    console.log('after return') // won't execute
  })
})

nur resolve erstellt einen erfolgreichen Versprechungsstatus, führt jedoch die Codeausführung aus, wenn return nicht verwendet wird.

Denken Sie daran, dass resolve() und reject() den Versprechungsstatus erstellen. Sie können nicht geändert werden, sobald der Status erstellt wurde. .then- und .catch-Handler werden für die weitere Ausführung verwendet. Die Verwendung von return hängt von Ihrem Code-Fluss ab. Wenn Sie nicht mehr Code in diesem Block ausführen möchten, ist return resolve()

return new Promise( (resolve, reject) => {
  fs.readFile(file, (err, data) => {
    if (err) reject(err)
    resolve(data)
    console.log('after return') // will execute
  })
})

es ist genau das gleiche wie eine normale return-Anweisung in einer function und hat nichts mit einem Versprechen zu tun

27
p0k8_

Es macht hier keinen Unterschied, aber wenn Sie etwas nach der Lösung erledigen wollen, siehe Beispiele unten auf der MDN-Seite: https://developer.mozilla.org/de/docs/Web/JavaScript/Referenz/Globale_Objekte/Versprechen/Auflösung

0
vnglst