javascript async/await не работает

У меня есть конкретный случай, когда мне нужно дождаться результата асинхронных вызовов, прежде чем продолжающий. Я использую ключевые слова async/await, но не везет. Любая помощь приветствуется.

Это моя попытка попытаться заставить его работать, числа должны быть в числовом порядке.

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function demo() {
  document.writeln('2...');
  await sleep(2000);
  document.writeln('3...');
}

document.writeln('1...');
demo();
document.writeln('4.');

2 ответов


вы должны использовать .then() после асинхронная функция.

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function demo() {
  document.writeln('2...');
  await sleep(2000);
  document.writeln('3...');
}

document.writeln('1...');
demo().then(() => {
    document.writeln('4.');
});

функция async вернет Promise, поэтому вам нужно дождаться вызова demo

const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms))

const demo = async () => {
  console.log('2...')
  await sleep(2000)
  console.log('3...')
}

const blah = async () => {
  console.log('1...')
  await demo()
  console.log('4.')
}

blah()