Как сделать wakanda async ssjs

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

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

3 ответа

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

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

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

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

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

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

Вы можете посетить страницу быстрого запуска вики, чтобы узнать больше.

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

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

function myHandler(request, response){
   callAsync(myParam, {onSuccess: function(event){
      response.body = event.result;
   });
}
Другие вопросы по тегам