Автор оригинала: Ujjwal Gupta.
Вступление
КВУГЕЙМРОТАКА Это новый браузер API, который можно использовать для преобразования вашего синхронного кода в Async:
queueMicrotask(() => {
console.log('hey i am executed asychronously by queueMicrotask');
});Это похоже на то, что мы делаем с использованием Settimeout:
setTimeout(() => {
console.log('hey i am executed asychronously by setTimeout');
}, 0);Так что же использование КВУГЕЙМРОТАКА Когда у нас уже есть Сетримс ?
В основном задачи КВУГЕЙМРОТАКА выполняются сразу после того, как текущая CallStack пуст, прежде чем передавать выполнение на петлю события.
Так что, если мы выполним сентиментальный Сначала и тогда КВУГЕЙМРОТАКА , который будет называться первым? Выполнить код ниже и проверить себя:
setTimeout(() => {
console.log('hey i am executed asychronously by setTimeout');
},0);
queueMicrotask(() => {
console.log('hey i am executed asychronously by queueMicrotask');
}); Node.js делает то же самое с «Process.NextTick».
Когда его использовать
Нет правила для того, чтобы использовать Queuemicrotask, Но его можно использовать ловко, чтобы запустить кусок кода, не останавливая текущее выполнение.
Например, скажем, у нас есть массив, где мы поддерживаем список значений. После того, как каждое значение вставлено, мы сортируем массив, чтобы поиск значений быстрее.
var arr=[];
function add(value){
arr.push(value);
arr.sort();
}Тем не менее, поиск элемента выполняется всякий раз, когда кто-то использует поле ввода поиска. Это означает, что обработчик событий будет вызываться после передачи управления в контуру события, поэтому сортировка данных блокирует выполнение другого важного синхронного кода.
Вот как мы можем использовать КВУГЕЙМРОТАКА Чтобы улучшить наш код:
var arr = [];
function add(value) {
arr.push(value);
queueMicrotask(() => {
arr.sort();
})
}использованная литература
Оригинал: “https://www.freecodecamp.org/news/queuemicrotask/”