Meteor: Aufruf einer asynchronen Funktion innerhalb einer Meteor.Methode und Rückgabe des Ergebnisses
Möchte ich nennen, eine asynchrone Funktion in eine Meteor Methode und das Ergebnis aus dieser Funktion Meteor.nennen.
(Wie) ist das möglich?
Meteor.methods({
my_function: function(arg1, arg2) {
//Call other asynchronous function and return result or throw error
}
});
InformationsquelleAutor der Frage Joseph Tura | 2012-09-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Andrew Mao hat Recht. Meteor hat jetzt Meteor.wrapAsync() für diese Art von situation.
Hier ist der einfachste Weg, um eine Ladung über Streifen und geben Sie eine callback-Funktion:
Ich fand diesen Beitrag sehr hilfreich:
Meteor: Korrekte Verwendung der Meteor.wrapAsync auf dem server
InformationsquelleAutor der Antwort jacksonkernion
Verwendung einer Zukunft zu tun. Wie diese:
Update:
Verwenden Zukunft ausgehend von Meteor 0.5.1, müssen Sie führen Sie den folgenden code in Ihrem Meteor.startup-Methode:
Update 2:
Verwenden Zukunft ausgehend von Meteor 0.6, müssen Sie führen Sie den folgenden code in Ihrem Meteor.startup-Methode:
verwenden und dann die
return
- Methode anstelle derret
Methode:Sehen diese gist.
InformationsquelleAutor der Antwort Joscha
Neueren Versionen von Meteor zur Verfügung gestellt haben, die ohne Papiere
Meteor._wrapAsync
Funktion stellt eine Funktion mit einem standard -(err, res)
Rückruf in einer synchronen Funktion, was bedeutet, dass die aktuelle Faser ergibt, bis der Rückruf gibt, und verwendet dann Meteor.bindEnvironment, um sicherzustellen, dass Sie behalten die aktuelle Meteor-Umgebungsvariablen (wieMeteor.userId())
.Eine einfache Anwendung wäre wie folgt:
Möglicherweise müssen Sie auch zu verwenden
function#bind
um sicherzustellen, dassasyncFunc
heißt mit den richtigen Rahmenbedingungen vor dem Umbruch.Weitere Informationen finden Sie unter: https://www.eventedmind.com/tracks/feed-archive/meteor-meteor-wrapasync
InformationsquelleAutor der Antwort Andrew Mao
Weitere option ist das Paket die erreicht, die ähnliche Ziele verfolgen.
Aus der Paket-Infodatei:
Async.wrap(Funktion)
Wrap eine asynchrone Funktion und lassen Sie es laufen im Meteor ohne Rückrufe.
InformationsquelleAutor der Antwort FullStack