Метод разрешения вложенных обещаний - PullRequest
0 голосов
/ 08 октября 2018

В приведенном ниже коде, когда я вызываю func, я получаю обещание, которое разрешается через 3 секунды и которое превращается в другое обещание.Затем вложенное обещание разрешается до числа 43 через дополнительные 3 секунды.У меня вопрос, почему console.log возвращает res: 43 через 6 секунд вместо нерешенного обещания через 3 секунды.Я. Тогда Func2, но я никогда .Тогда другой Func

async function func(){
  const val = func2().then((other)=>{console.log("res:"+other)})
}

async function func2(){
  return new Promise(resolve => {
    setTimeout(()=>resolve(otherfunc()),3000)

  })
}
async function otherfunc(){
  return  new Promise(resolve => {
    setTimeout(()=>resolve(43),3000)

  })
}

1 Ответ

0 голосов
/ 08 октября 2018

вы разрешаете func2 с другим обещанием, otherfunc(), поэтому func2 разрешается через 3 секунды, после чего вызывается otherfunc, который также разрешается через 3 секунды.Результат, который вы видите в вашем операторе console.log, показывает 43, потому что .then() будет ждать выполнения всех обещаний.

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