НЕТ! вы не ошиблись в том, что JavaScript — это однопоточный язык. Это однопоточный язык, он имеет доступ к одному основному потоку для выполнения кода. Поэтому, когда мы говорим о синхронном программировании, мы говорим об этом одиноком потоке, выполняющем всю тяжелую работу и выполняющем наш код.
Но на самом деле движок V8 и Node.js используют библиотеку c под названием libuv, чтобы получить доступ к шести дополнительным потокам. Два из них используются для сбора мусора, а остальные — для выполнения фоновых задач, таких как асинхронное программирование.
Да. Когда мы говорим, что код является асинхронным или неблокирующим, на самом деле происходит следующее: асинхронный код передается этим дополнительным потокам с обратным вызовом, а основной поток продолжает выполнять свою работу, не блокируя остальную часть кода.
Когда асинхронный код завершается, функция обратного вызова помещается в очередь событий либо с ошибкой, либо с необходимыми данными. Затем цикл событий помещает его в стек вызовов, и мы получаем результат, чтобы понять это с помощью некоторого кода. Давайте посмотрим на метод readfile модуля fs.
fs.readFile("demo.text","utf8",(err,data)=>{ if(error){ return error } console.log("output",data); })
В приведенном выше коде метод readfile передается фоновым потокам. Чтение происходит в фоновом режиме, и когда оно завершается, обратный вызов помещается в очередь событий либо с ошибкой, либо с данными.
После попадания в стек вызовов выполняется обратный вызов, и на выходе остается либо ошибка, либо данные.
Спасибо за чтение. Надеюсь, я смог объяснить однопоточные средства в Javascript.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3