In der JavaScript-Community habe ich eine Funktion gesehen, die ein Versprechen zurückgibt, das oft "thenable" genannt wird, das ich " thenable " beim Codieren finde. Es ist eine thenable-Funktion .
Ich mag diesen Namen aus einer Reihe von Gründen:
1) Thenable beschreibt das funktionale Verhalten. Wenn es eine Zusage zurückgibt, können Sie "then" aufrufen.
2) Es ist einzigartig. Versprechen sind nicht genau monadisch, also ist Monade nicht angemessen. "Async" ist eher eine Superklasse von Funktionen und hilft nicht, das Wesen eines Versprechens zu beschreiben. Aber "thenable" ist einzigartig Promisely.
3) Ich mag es auch, dass es keine Promise überall wiederholt (Promissory, Promisified, Promise Function, etc.), die sich einer zirkulären Definition IMO nähert. In der Lage zu sein, ein Wort zu googeln, das eine bestimmte Bedeutung hat, ist wirklich nett.
Die aktuellen Antworten sind nicht wirklich korrekt. Die Wahrheit der Sache ist es gibt keinen kurzen klugen Namen für "Funktion, die ein Versprechen zurückgibt" das ist im Konsens der JS-Gemeinschaft.
Die Spezifikation benennt sie nicht auf eine besondere Weise, keine Dokumentation irgendeiner populären Bibliothek benennt sie auf eine spezielle Art und Weise. Die Spezifikation der Versprechen nennt sie nicht in besonderer Weise.
Andererseits, wenn wir den Literaturzweig überprüfen, der von Liskov und Shrira stammt, dann tun sie das nicht 't, und auch nicht Bogle noch Zondervan verwenden einen anderen Begriff als" ein Versprechen zu bekommen "oder" die Zukunft zu bekommen "Dafür (sie verwenden claim
zum Extrahieren des Wertes).
Wenn wir Mark Millers Arbeit überprüfen, verwendet er auch keine Begriffe dafür.
In anderen Sprachen geht es nicht besser. C # hat keinen speziellen Namen für Methoden, die Task
s (ihre Versprechen) zurückgeben. Es hat "Async-Funktionen" für Funktionen, die async / await zurückgeben, aber das ist nur eine strikte Untermenge. Kein spezieller Name in Scala, kein spezieller Name in Python, kein spezieller Name in Java und so weiter. Das einzige, was close war, war die Android-API von parse, die ihre Versprechen ' then
callbacks Continuation
nannte, aber das ist in diesem Zusammenhang kaum sinnvoll.
Wenn Sie sich besser fühlen - wir haben keinen Namen für etwas, das ein Array zurückgibt.
then
eine gültige bind
. Noch wichtiger ist, dass nur sehr wenige JS-Entwickler wissen, was Monaden sind und noch weniger Pflege. async
-Modifikator der Sprache hinzugefügt wird. Im Moment und wahrscheinlich als Ereignis betrachten viele Leute Dinge wie setTimeout
oder fs.openFile
als asynchrone Funktionen. Zusammenfassend, die Leute, die erfunden haben, die Leute, die sie für JavaScript spezifiziert haben, die Leute, die diese Spezifikation geschrieben haben, die Spezifikation selbst, die Versprechens-Bibliotheken, die Bibliotheken, die mit denen geschrieben wurden und der durchschnittliche Benutzer nicht irgendeinen speziellen Namen dafür.
Ich denke, wir können bei eine Funktion bleiben, die ein Versprechen zurückgibt .
Wenn Sie sich dadurch besser fühlen - wir nennen keine "Funktionen, die einen int zurückgeben" entweder :)
Wir nennen sie asynchrone Funktionen . Selbst wenn die Funktion selbst nichts Asynchrones tut, gibt sie zumindest ein Versprechen zurück - einen asynchronen Wert.
Sie können das auf async function verkürzen, obwohl dieser Begriff auch für die ES7 syntaktische Notation async function
verwendet wird, die Funktionen erzeugt, die Versprechen implizit zurückgeben (deren Code await
verwenden kann) / p>
Wenn Sie an die Art von Funktionen denken möchten, die Monaden zurückgeben (was verspricht), können Sie sie Kleisli Pfeile . Aber du hast eine [Javascript] -Frage gestellt, keine [Typentheorie], oder?
Nach meiner Erfahrung gibt es keine einzelnen Wörter, um Funktionen zu beschreiben, die einen bestimmten Typ zurückgeben. Sie werden allgemein als "eine Funktion bezeichnet, die ein & lt; Type & gt; " zurückgibt.
Zum Beispiel:
foo()
ist eine Funktion, die einen String zurückgibt
bar()
ist eine Funktion, die eine Zahl zurückgibt
baz()
ist eine Funktion, die ein Versprechen zurückgibt
In diesem Kontext wird Promise
ähnlich wie eine Schnittstelle in einer stark typisierten Sprache verwendet.
Ein anderes Beispiel für einen generischen Typ wäre
fizz()
ist eine Funktion, die eine Sammlung zurückgibt
Das heißt nicht, dass es kein Wort mit einer Definition von "einer Funktion geben kann, die ein Versprechen " zurückgibt, aber es gibt kein allgemein verwendetes Jargon, um dies zu beschreiben.
"Deferred Function" wird manchmal verwendet, um eine Funktion zu beschreiben, die Versprechen oder Versprechen-ähnliche Objekte (d. h. jQuery's Deferred Object) zurückgibt.
Funktionen, die Versprechungen zurückgeben, können auch durch andere allgemeinere Wörter beschrieben werden (ähnlich wie ein Quadrat als Rechteck, Parallelogramm, Rhombus oder Viereck beschrieben werden kann).
Ich persönlich würde "Promissory Functions" wählen, da "Promissory" bedeutet:
vermitteln oder ein Versprechen geben
und mir gefällt die Idee, dass der Rückgabewert einer solchen Funktion "ein Versprechen" ist.
Technisch gesehen ist ein Versprechen eine Monade . Daher ist eine Funktion, die ein Versprechen zurückgibt, eine monadische Funktion .
Tags und Links javascript promise