doSomething("2nd Call");
console.log('leaving 2nd promise');
Выполнение чего-либо выполняется асинхронно и для завершения его выполнения потребуется ~1000
м / с.Итак, когда doSomething("2nd Call");
первоначально вызывается, ваш код переходит в ваш метод, возвращает обещание и начинает setTimeout
.Затем "leaving 2nd promise"
регистрируется.Позже, в конце пути, setTimeout, который мы инициировали ранее, вызывая doSomething("2nd Call")
, завершится, и он будет регистрировать "2nd Call"
на консоли.Чтобы дождаться завершения исходного вызова на doSomething("2nd Call")
, вам нужно использовать .then()
(или await
) в обещании, которое он возвращает, чтобы вы могли выполнить свой код, когда обещание разрешится:
function doSomething(msg) {
return new Promise(
(myresolve, myreject) => {
setTimeout(
() => {
console.log(msg);
console.log('In the promise')
myresolve();
},
1000);
});
}
doSomething("1st Call")
.then(() => doSomething("2nd Call"))
.then(() => console.log('leaving 2nd promise'))
.then(() => doSomething("3rd Call"))
.then(() => console.log('leaving 3rd promise'));