@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, при этом интерфейс перестает отвечать.
  • Вопрос задан
  • 158 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Karpion
Почему Вы решили, что операторы внутри одной функции, пусть даже асинхронной, должны выполняться одновременно? А если там просто вычисления и т.б. всякие ветвления/циклы?
Я всегда считал, что асинхронная функция выполняется отдельным потоком, при этом главная программа продолжает выполняться.

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


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

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

Похожие вопросы
24 нояб. 2024, в 01:35
5000 руб./за проект
24 нояб. 2024, в 01:24
500 руб./за проект
24 нояб. 2024, в 00:04
5000 руб./за проект