При использовании Javascript-обещаний блокируется ли цикл событий?
Нет. Обещания - это только система уведомления о событиях. Это не сама операция. Они просто отвечают на то, чтобы быть разрешенными или отклоненными, вызвав соответствующие обработчики .then()
или .catch()
, и если они связаны с другими обещаниями, они могут отсрочить вызов этих обработчиков до тех пор, пока обещания, которые они прикованы, также не разрешат/отклоняют. Поскольку такое обещание ничего не блокирует и, конечно же, не блокирует цикл событий.
Я понимаю, что с помощью Await & асинхр, делает стек остановки , пока операция не будет завершена. Это делает это, блокируя стек или он действует аналогично обратному вызову и проходу процесса до API-типа?
await
просто синтаксический сахар, который заменяет .then()
обработчик с синтаксисом немного проще. Но под крышкой операция такая же. Код, который появляется после await
, в основном помещается внутри невидимого обработчика .then()
, и нет блокировки цикла событий, так же как нет блокировки с обработчиком .then()
.
Мое понимание заключается в том, что в этом смысл обещания. – Feathercrown
* «он действует аналогично обратному вызову». * В общем смысле обратный вызов может быть вызван асинхронно * или * синхронно в зависимости от контекста. Но вся суть обещаний - разрешить асинхронные (неблокирующие) операции. – nnnnnn
Нет «стека» в том смысле, что вы, кажется, используете его. Я думаю, вы имеете в виду «цикл событий». Возможно, вы должны отредактировать свой титул, а также тело вашего вопроса. –