2017-02-20 2 views
6

irgendwo in diesem Beispiel lesen:Versprechen. Was ist der Unterschied betwen Rückkehr lösen ist() und resolve()

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

aber ich tun dies in der Regel:

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

gibt es einen Unterschied?

+2

Es wird hier keinen Unterschied machen. – elclanrs

+0

Ich denke im ersten Fall können Sie Kette, aber in der zweiten, können Sie nicht –

Antwort

11

return resolve() wird nur die Ausführung der Funktion als eine normale return, die nur auf den Fluss Ihres Codes abhängt, wenn Sie nicht wollen oder brauchen mehr Code in Ihrer Funktion auszuführen, dann verwenden Sie eine return, um die zu beenden

Funktion
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 einen erfolgreichen Zustand der Verheißung schaffen, aber die Ausführung von Code ausgeführt werden, wenn es welche gibt, wenn return nicht verwendet wird.

Denken Sie daran, resolve() und reject() den Zustand der Versprechen erstellt haben, können sie nicht mehr geändert werden, sobald der Zustand erzeugt wird, .then und .catch Handler für die weitere Ausführung verwendet, return Verwendung hängt ganz von Ihrem Code-Flow. Wenn Sie wollen, dass es nicht nicht mehr Code in diesem Block ausführen, dann 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 einfach wie eine normale return-Anweisung in einem function und hat nichts mit dem Versprechen zu tun

+0

Es wäre nützlich zu zeigen, wie sie beide reagieren, wenn ein '.then 'Zustand erstellt wird - dh man wird scheitern, wird man nicht . – brandonscript

Verwandte Themen