2017-04-26 2 views
2

Im Promises/A+ spec (section 3) heißt es:Was ist ein Trampolin in diesem Zusammenhang?

Da die Versprechen Implementierungsplattform Code betrachtet wird, kann es selbst eine Task-Scheduling-Warteschlange enthalten oder „Trampolin“, in dem die Handler aufgerufen werden.

Was ist ein Trampolin in diesem Zusammenhang?

+1

[Wikipedia erklärt] (https://www.wikiwand.com/de/Trampoline_ (Computing) #/High-level_programming) dass * ein Trampolin ist eine Schleife, die iterativ [thunk] (https: // www. wikiwand.com/de/Thunk_(functional_programming))-returning-Funktionen ([continuation-passing style) (https://www.wikiwand.com/de/Continuation-passing_style)) *. – sp00m

+0

Ist die JavaScript-Ereignisschleife ein Trampolin? Ich nehme an, meine Frage ist: Warum Erwähnung in der Promise/A + -Spezifikation, was ein Implementierungsdetail zu sein scheint? Gibt es in diesem Fall eine besondere Bedeutung eines Trampolins? – Ben

+1

[Dies ist ein Beispiel für ein Trampolin] (https://github.com/bergus/F-Promise/blob/master/src/continuations.js#L23-L27) in einer sehr komplizierten (und daher aufgegeben) Versprechen Umsetzung . – Bergi

Antwort

0

Ein Trampolin ist eine Kontrollstruktur, die es ermöglicht, rekursive Logik zu implementieren und gleichzeitig die Beschränkungen von Stack-basierten Sprachen ohne Tail-Call-Optimierung zu umgehen.

Die rekursive Natur der geschachtelten Versprechen Ketten eignet sich für eine rekursive Lösung für eine Versprechen Implementierung.

Vermutlich wird das Trampolin daher in der Spezifikation Promise/A + als eine häufig verwendete Implementierungsmethode identifiziert, obwohl es in einigen Sprachen nicht unbedingt notwendig oder tatsächlich nicht optimal ist.

Zum Beispiel führte ES2015 die Tail-Call-Optimierung in JavaScript ein, wodurch ein (mindestens User-Landeplatz) Trampolin, vermutlich nicht mehr, notwendig wurde. Die Promises/A + Spezifikation wurde jedoch Jahre vor ES2015 geschrieben.

Verwandte Themen