2016-04-24 13 views
0

zu machen Ich benutze httpRequestHandlers für alle Interaktion zwischen dem Webclient und Wakanda-Server. Ich verwende keinen Wakanda-Connector vom Server zum Client.wie wakanda async ssjs

Wie stelle ich der Web-Seite asynchrone Antworten (Versprechen) zur Verfügung, wenn SSJs-Aufrufe an andere Server auf eine Antwort warten?

Antwort

4

Versprechen sind ausschließlich eine Kundenseite. Sie müssen von Wakanda Server nichts anderes tun als ein Ergebnis (wie Sie es bereits getan haben) mit dem httpRequestHandler zurückgeben. Wie Sie mit der Anfrage umgehen, ist Ihre Wahl.

Die Tatsache, dass Ihr serverseitiger Code eine Anfrage an eine dritte Partei stellt, hat keinen Einfluss darauf, wie Sie sich der asynchronen Natur des Browsers nähern (sei es Versprechen oder Rückrufe). Ihr Wakanda Server-Code wird synchron sein und auf eine Antwort warten. Wenn die serverseitige Anfrage abgeschlossen ist, einschließlich der Anfrage an die dritte Partei, antwortet sie wiederum auf Ihren Browser.

Da der Wakanda Server multi-threaded ist, blockiert der synchrone Code für die Anforderung nicht, dass andere Anforderungen erfüllt werden.

Ich hoffe, das hilft.

0

Clientseitige Aufrufe erfolgen asynchron wie hier beschrieben: docs Um Versprechen zu unterstützen, müssen Sie eine Bibliothek wie Bluebird verwenden und native Aufrufe mit Callbacks promiziieren, um Funktionen zu erhalten, die Versprechen versprechen.

Der Aufruf von Methoden async Server Seite in einem HTTP-Request-Handler ist auch einfach genug. Verwenden Sie einfach nicht return in der Hauptfunktion, sondern response.body (und/oder response.statusCode, headers ...) in Ihrem Callback. Es könnte wie folgt aussehen:

function myHandler(request, response){ 
    callAsync(myParam, {onSuccess: function(event){ 
     response.body = event.result; 
    }); 
} 
0

ich mit früheren Antworten stimmen zu, dass mit Versprechungen auf dem vorderen Teil Ihrer Anwendung nicht aus dem Backend eine besondere Fähigkeit zu bieten benötigt.

Wenn Sie Wakandas REST-API verwenden, können Sie die Wakanda JavaScript Client verwenden, die bereits eine Promise-API verfügbar macht.

Sie können die quick-start wiki page besuchen, um mehr zu erfahren.

Verwandte Themen