Der Unterschied ist in Verkettungs und Fehlerbehandlung und Fehlerprotokollierung:
Q(...)
.then(...)
.finally();
Wenn hier die then
wirft, die finally
noch laufen, aber kein Fehler protokolliert. In Q finally
wird unabhängig davon ausgeführt, ob .then
erfolgreich ist oder nicht. Dies ist wie das Schlüsselwort finally
in JS try/catch/finally
. Es ist auch möglich, in diesem Fall zusätzliche then
s an die Kette zu ketten.
Q(..)
.then()
.done();
Hier done
zeigt an, dass das Versprechen Kette beendet ist, können Sie nicht Kette, um es nicht mehr. Wenn Sie es nur einen onFulilled-Handler übergeben, wird es nicht ausgeführt, wenn then
warf, und es protokolliert Fehler, wenn es mit einer Ausnahme endet.
Welche Argumente übergeben Sie an '.then',' .finally' und '.done'? – Bergi
Ich habe die Dokumente gelesen und fand die Antwort selbst nicht so offensichtlich. –
Versprechen ist jetzt Teil der JS-Spezifikation, Teil des ECMAScript 2015 (ES6) -Standards. – Pieter