Задержка Ответа с Хапи 18.1 - PullRequest
1 голос
/ 01 мая 2020

Как я могу установить задержку ответа, используя Хапи 18.1 , я хочу видеть вращение песочных часов, если реакция API медленная. В более ранних версиях я использовал setTimeout(), как показано ниже.

server.route({
    method: 'GET',
    path:'/hello',
    handler: (request, h) => {
       setTimeout(() => reply('Hello World!'), 1000);
    }
});

Но v18.1 выдает ошибку

server.route({
    method: 'GET',
    path:'/hello',
    handler: (request, h) => {
       setTimeout(() => h.response('Hello World!'), 1000);
    }
});

Ошибка

Debug: internal, implementation, error
    Error: get method did not return a value, a promise, or throw an error
    at module.exports.internals.Manager.execute (C:\Users\javakb\workspace\node_modules\hapi\lib\toolkit.js:48:29)
    at processTicksAndRejections (internal/process/task_queues.js:85:5)
    at async Object.internals.handler (C:\Users\javakb\workspace\node_modules\hapi\lib\handler.js:46:20)
    at async exports.execute (C:\Users\javakb\workspace\node_modules\hapi\lib\handler.js:31:20)
    at async Request._lifecycle (C:\Users\javakb\workspace\node_modules\hapi\lib\request.js:312:32)
    at async Request._execute (C:\Users\javakb\workspace\node_modules\hapi\lib\request.js:221:9)

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 02 мая 2020

Хапи 18 ожидает, что его обработчики маршрутов вернут ответ или обещание, которое разрешается в ответ. Ваш код этого не делает. Это можно исправить, просто вернув обещание, которое разрешается в ответ после ожидания в течение 1 секунды.

Пример

server.route({
    method: 'GET',
    path: '/',
    handler: (request, h) => {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve(h.response('Hello World!'));
        }, 1000);
      });
    }
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...