Node.js Обещание без возврата - PullRequest
0 голосов
/ 30 марта 2020

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

doSomething()
{
    Promise.resolve()
        .then(() => {
            // do something.
        })
        .catch(reason => {
            this.logger.error(reason);
        });
}

Получение этой ошибки:

(node:2072) Warning: a promise was created in a handler at internal/timers.js:439:21 but was not returned from it, see http://. goo.gl/rRqMUw
    at Function.Promise.cast (.../node_modules/bluebird/js/release/promise.js:225:13)

1 Ответ

1 голос
/ 31 марта 2020

Просто верните что-нибудь из обратного вызова Promise, где вы создаете обещание fire and forget.

Я предполагаю, что обработчик равен doSomething

doSomething()
{
    Promise.resolve()
    .then(() => {
        // do something.
    })
    .catch(reason => {
        this.logger.error(reason);
    });

    return null //or anything else that's sensible
}

Примечание: Обычно мы игнорируем сообщение об ошибке, но иногда они содержат ценную информацию. В вашей ошибке есть ссылка http://. goo.gl/rRqMUw, которая объясняет именно эту проблему: d

...