JavaScript не знает, что setTimeout является асинхронным, и вы не говорите об этом никоим образом. Вы должны сказать, что в обратном вызове setTimeout
поток синхронизируется снова.
Вместо этого вы запускаете тайм-аут и идете вперед (и не важно, находится ли он внутри обещания!).
Кроме того, ваше ожидание бесполезно, потому что вы ждете два обещания, чтобы решить, но вы ничего не делаете после того, как вы ждали.
Возможно, вы имели в виду что-то вроде этого:
await promiseForm; // Wait the first promise
await new Promise (res => { // Wait the timeout
setTimeout(function () {
$container.fadeOut(function() {
$container.append(msg);
$container.fadeIn();
res();
});
}, 800);
});
// Do something after that everything happened
PS. Нужно ли выполнять два обещания по очереди? Разве вы не можете распараллелить их (получить улучшение производительности)?
Может быть, вы могли бы использовать Promise.all