我使用httpRequestHandlers来处理web客户端和Wakanda服务器之间的所有交互。我没有使用从服务器到客户端的Wakanda连接器。
当对其他服务器的ssjs调用等待响应时,我如何向web ui提供异步响应(承诺)?
发布于 2016-04-25 03:13:10
Promise只是一个客户端的关注点。您不需要从Wakanda Server执行任何操作,只需使用httpRequestHandler返回结果(正如您已经在做的那样)。如何处理客户端请求是您的选择。
您的服务器端代码向第三方发出请求这一事实不会影响您如何处理浏览器的异步特性(无论是承诺还是回调)。您的Wakanda Server代码将是同步的,并等待响应。反过来,当服务器端请求完成时,包括对第三方的请求,它将响应您的浏览器。
由于Wakanda Server是多线程的,请求的同步代码不会阻止其他请求的实现。
我希望这能帮到你。
发布于 2016-04-25 16:53:49
客户端调用是异步进行的,如下所述:docs要支持promises,您必须使用像Bluebird这样的库,并使用回调代理本机调用,以获得返回promises的函数。
在HTTP请求处理程序中调用异步服务器端的方法也很简单。只是不要在main函数中使用return,而是设置response.body (和/或response.statusCode,headers...)在你的回调中。它可能看起来像这样:
function myHandler(request, response){
callAsync(myParam, {onSuccess: function(event){
response.body = event.result;
});
}发布于 2016-04-28 22:49:47
我同意之前的回答,即在应用程序的前端使用Promises不需要从后端提供任何特殊功能。
如果您使用的是Wakanda的REST API,那么您可以使用已经公开了Promise API的Wakanda JavaScript Client。
您可以访问quick-start wiki page了解更多信息。
https://stackoverflow.com/questions/36826288
复制相似问题