我正在使用httpRequestHandlers进行Web客户端和Wakanda服务器之间的所有交互。我没有使用从服务器到客户端的Wakanda连接器。
当ssjs调用其他服务器等待响应时,如何向web ui提供异步响应(promises)?
答案 0 :(得分:4)
承诺完全是客户方关注的问题。除了使用httpRequestHandler返回结果(正如您已经在做的那样)之外,您不需要从Wakanda Server执行任何操作。您如何处理请求客户端是您的选择。
您的服务器端代码向第三方发出请求的事实不会影响您接近浏览器的异步性质(无论是承诺还是回调)。您的Wakanda服务器代码将是同步的并等待响应。反过来,当服务器端请求完成时,包括对第三方的请求,它将响应您的浏览器。
由于Wakanda Server是多线程的,请求的同步代码不会阻止其他请求被执行。
我希望这会有所帮助。
答案 1 :(得分:0)
Client side calls be made asynchronously like described here: docs To support promises you'll have to use a library like Bluebird and promisify native calls with callbacks to get functions returning promises.
Calling methods async server side in a HTTP request handler is simple enough too. Just don't use return in the main function, but set response.body (and/or response.statusCode, headers...) in your callback. It could look like this:
function myHandler(request, response){
callAsync(myParam, {onSuccess: function(event){
response.body = event.result;
});
}
答案 2 :(得分:0)
我同意之前的答案,即在应用程序的Front部分使用Promises不需要从后端提供任何特殊功能。
如果您使用的是Wakanda的REST API,则可以使用已公开Promise API的Wakanda JavaScript Client。
您可以访问quick-start wiki page了解详情。