2016-04-24 2 views
0

Я использую httpRequestHandlers для всего взаимодействия между веб-клиентом и сервером Wakanda. Я не использую Wakanda коннектор от сервера к клиенту.Как сделать wakanda async ssjs

Как предоставить асинхронные ответы (обещания) на веб-сайт ui, когда ssjs-вызовы на другие серверы ждут ответа?

ответ

4

Обещания относятся исключительно к стороне клиента. Вам не нужно ничего делать с Wakanda Server, кроме как вернуть результат (как вы уже делали) с помощью httpRequestHandler. Как вы обрабатываете клиентскую сторону запроса, это ваш выбор.

Тот факт, что ваш код на стороне сервера отправляет запрос третьей стороне, не влияет на то, как вы подходите к асинхронной природе браузера (будь то обещания или обратные вызовы). Ваш код сервера Wakanda будет синхронным и ждать ответа. В свою очередь, когда запрос на стороне сервера будет завершен, включая запрос третьей стороне, он ответит на ваш браузер.

С сервером Wakanda, который является многопоточным, синхронный код для запроса не будет блокировать выполнение других запросов.

Надеюсь, это поможет.

0

Запросы на стороне клиента выполняются асинхронно, как описано здесь: docs Для поддержки обещаний вам нужно будет использовать библиотеку, такую ​​как Bluebird, и пролонгировать собственные вызовы с обратными вызовами, чтобы получить функции, возвращающие обещания.

Способы вызова асинхронного сервера в обработчике HTTP-запросов также достаточно просты. Просто не используйте return в основной функции, а установите response.body (и/или response.statusCode, headers ...) в своем обратном вызове. Это может выглядеть следующим образом:

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

Я согласен с предыдущими ответами, которые с помощью Promises на передней части вашего приложения не нужен от внутреннего интерфейса, чтобы предложить какие-либо специальные возможности.

Если вы используете REST API Wakanda, вы можете использовать Wakanda JavaScript Client, который уже предоставляет API Promise.

Вы можете посетить quick-start wiki page, чтобы узнать больше.