Почему тогда обратный вызов для этого Обещания никогда не вызывался? - PullRequest
0 голосов
/ 30 января 2019

У меня есть этот простой сценарий, назовем его hello.js:

async function main() {
    console.log("Hello world!");
}

main().then(() => "All done").catch(e => console.err(e));

Я запускаю его с Node.js (версия 10.15.0):

node hello.js

и все, что я получаю для вывода, это

Hello world

, хотя я ожидал получить что-то вроде

Hello world
All done

У меня проблемы с пониманием того, как работают обещания, или это что-то еще?

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Посмотрите на функцию, которую вы передаете then.

const f = () => "All done";

f();

Это просто возвращает строку.

Если вы хотите, чтобы это где-то было зарегистрировано, то вам нужно зарегистрировать его.

Например:

async function main() {
  console.log("Hello world!");
}

main()
  .then(() => "All done")
  .then(string => console.log(string))
  .catch(e => console.err(e));
0 голосов
/ 30 января 2019

Вы пропустили консольный журнал.

main().then(() => console.log("All done")).catch(e => console.err(e));
...