Я давний инженер JS старой школы, борюсь с Обещаниями.Мы обновляем HAPI v17, и мне сложно понять, как преобразовать существующий код, чтобы он работал.Вот проблема (обычно):
У меня есть маршрут HAPI v16, который выполняет что-то вроде:
server.route({
method: 'GET',
path: '/product/prd-{productId}/{filename*}',
handler: function (request, reply) {
var productId = encodeURIComponent(request.params.productId);
if( /*someCondition*/ ){
server.inject('/staticmessages/product', function (SCResponse) {
if (SCResponse.statusCode === 200 && SCResponse.statusMessage === 'OK') {
productStaticContent = JSON.parse(SCResponse.payload).messages;
}
PDPController.renderPDP(request, reply, productId, productStaticContent);
});
}
else {
PDPController.renderPDP(request, reply, productId, productStaticContent);
}
}
});
В основном, обработчик маршрута проверяет некоторые внутренние флаги, чтобы определитьесли ему нужно выполнить асинхронный вызов для получения некоторых строк или нет, то перенаправляет управление методу объекта контроллера для выполнения запроса.
Итак, у меня есть ряд проблем: во-первых, это условнаяасинхронный вызов.Во-вторых, вызов server.inject теперь является ожиданием (по состоянию на HAPI v17).В-третьих, мне нужно вернуть Promise от обработчика (независимо от того, делаю я асинхронный вызов или нет).В-четвертых, я полагаю, что метод контроллера должен быть обещанием?
Я рассмотрел (изучил!), Вероятно, дюжину веб-сайтов, посвященных Обещаниям, и ряд видео, и я полагаю, что это действительно смена парадигмы, поскольку яЯ действительно не получаю полную картину.Похоже, все должно быть просто, но есть неопознанное препятствие, которое я просто не преодолеваю.Любая помощь будет высоко ценится!