@kokapuk

Почему асинхронная функция блокирует выполнение остального когда?

doSome();

async function doSome(){
    console.log('1')
    await fyn();
    console.log('2')
}

function fyn(){
    sleep(1000)
}

function sleep(milliseconds) {
    const date = Date.now();
    let currentDate = null;
    do {
      currentDate = Date.now();
    } while (currentDate - date < milliseconds);
}


Я ожидал вывести консоль моментально 1 и 2, потому что именно так это работало в c#, но этот процесс зависает на момент работы fyn, при этом интерфейс перестает отвечать.
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Karpion
Почему Вы решили, что операторы внутри одной функции, пусть даже асинхронной, должны выполняться одновременно? А если там просто вычисления и т.б. всякие ветвления/циклы?
Я всегда считал, что асинхронная функция выполняется отдельным потоком, при этом главная программа продолжает выполняться.

Попробуйте так:
async function fyn(){
	sleep(1000)
}


Или попробуйте после doSome(); сделать console.log('3')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы