Вызов функции внутри разрешения - PullRequest
0 голосов
/ 11 октября 2019

Я изучаю обещания;Кто-нибудь может объяснить мне, почему этот кусок кода не работает, если я вызываю функцию add () внутри разрешения?

<script>
async function f() {

function add() {
  return 14+3;
}


  let promise = new Promise((resolve, reject) => {
    setTimeout(()=>{resolve(add)}, 3000); //this doesn't work
    setTimeout(()=>{resolve(14+3)}, 3000); // this works
  });

  let result = await promise;

  alert(result);

  alert ("END");
}

f();
</script>

1 Ответ

1 голос
/ 11 октября 2019

Когда вы решаете со значением, вы фактически возвращаете значение из обещания. В вашем примере вы решаете с помощью функции в аргументах, поэтому ваше обещание возвращает функцию (функция add)

Так измените строку, resolve(add); на resolve(add());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...