2016-01-11 18 views

Antwort

3

Hinweis: Jetzt ist .chain nur ein veralteter Alias ​​für then.


Was chain tut, ist im Grunde, was then tut, außer nicht Versprechungen auszupacken. Chain ist eine echte "monadische flatMap" anstatt then, die automatisch Versprechungen auspackt.

Es wurde at great lengths auf der Mailing-Liste und in TC-Sitzungen diskutiert. Es wurde dagegen entschieden.

.chain ist nur ein Überbleibsel aus der Vergangenheit in Chrome, es könnte es in einer zukünftigen Version machen, aber derzeit niemand einen Vorschlag es einschließlich verfechten. Ich würde es nicht in der Produktion verwenden.

+1

Was bedeutet "Versprechen nicht auspacken" und wann möchten Sie '.chain()' anstelle von '.then()' verwenden? – jfriend00

+0

@ jfriend00 Versuche 'Promise.resolve (3) .chain (x => ({dann: f => f (4)})) .chain (c => console.log (" Got ", c))' vs 'Promise.resolve (3) .dann (x => ({dann: f => f (4)})) .dann (c => console.log (" Got ", c))' - das geht nicht automatisch Packen Sie das Ergebnis aus. –

+0

Wenn Sie ein Versprechen von sich selbst zurückgeben wollten, das nicht als Teil der aktuellen Kette verwaltet wurde, könnten Sie es auch einfach in ein Objekt einbetten und das Objekt zurückgeben, richtig? Vielleicht, da ich so daran gewöhnt bin, wie es jetzt mit '.then()' funktioniert, kann ich mir keine Situation vorstellen, in der ich '.chain()' Logik hätte und selbst wenn ich könnte, könnte ich einfach Verstecken Sie das Versprechen in einem anderen zurückgegebenen Objekt und verwenden Sie weiterhin '.then()'. Gibt es noch andere Gründe für '.chain()'? – jfriend00