[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/ko/docs/Web/API/HTML_DOM_API/Microtask_guide [Back]  [Original]

JavaScript queueMicrotask() - Web API | MDN

This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

JavaScript queueMicrotask()

JavaScript , .

. , .

JavaScript Mutation Observer API , . , , , Window Worker queueMicrotask() .

In this article

vs

, JavaScript , . , : JavaScript .

, , JavaScript . .

.

. , .

. . JavaScript , . , .

.

, JavaScript . . , , .

, queueMicrotask() , . .

: , . .

, , , . JavaScript , . .

, , . ( ) , queueMicrotask() .

queueMicrotask() . . .

JavaScript Function queueMicrotask() . queueMicrotask() Window Worker .

js
queueMicrotask(() => {
  /*    */
});

.

. JavaScript , , .

?

, .

if...else ( ) , . .

js
customElement.prototype.getData = (url) => {
  if (this.cache[url]) {
    this.data = this.cache[url];
    this.dispatchEvent(new Event("load"));
  } else {
    fetch(url)
      .then((result) => result.arrayBuffer())
      .then((data) => {
        this.cache[url] = data;
        this.data = data;
        this.dispatchEvent(new Event("load"));
      });
  }
};

if...else ( ) , else .

js
element.addEventListener("load", () => console.log("Loaded data"));
console.log("Fetching data...");
element.getData();
console.log("Data fetched");

.

,

Fetching data...
Data fetched
Loaded data

,

Fetching data...
Loaded data
Data fetched

, data , .

if .

js
customElement.prototype.getData = (url) => {
  if (this.cache[url]) {
    queueMicrotask(() => {
      this.data = this.cache[url];
      this.dispatchEvent(new Event("load"));
    });
  } else {
    fetch(url)
      .then((result) => result.arrayBuffer())
      .then((data) => {
        this.cache[url] = data;
        this.data = data;
        this.dispatchEvent(new Event("load"));
      });
  }
};

data load . (if queueMicrotask(), else fetch )

, .

, .

js
const messageQueue = [];

let sendMessage = (message) => {
  messageQueue.push(message);

  if (messageQueue.length === 1) {
    queueMicrotask(() => {
      const json = JSON.stringify(messageQueue);
      messageQueue.length = 0;
      fetch("url-of-receiver", json);
    });
  }
};

sendMessage() . .

sendMessage() . JavaScript , . sendMessage() , .

. JSON.stringify() JSON . messageQueue . fetch() JSON .

sendMessage() fetch() , , .

JSON .

, .

JavaScript

queueMicrotask() . log() , .

js
log("  ");
queueMicrotask(() => {
  log(" .");
});
log("  ");

0 (" ") . (setTimeout() ) " ", " " .

JavaScript

queueMicrotask() . 0ms . log() , .

js
let callback = () => log("   .");

let urgentCallback = () => log("*** !   !");

log("  ");
setTimeout(callback, 0);
queueMicrotask(urgentCallback);
log("  ");

, , . , . , .

, queueMicrotask() . .

JavaScript

. doWork() queueMicrotask() , , .

js
let callback = () => log("   .");

let urgentCallback = () => log("*** !   !");

let doWork = () => {
  let result = 1;

  queueMicrotask(urgentCallback);

  for (let i = 2; i <= 10; i++) {
    result *= i;
  }
  return result;
};

log("  ");
setTimeout(callback, 0);
log(`10! ${doWork()} .`);
log("  ");


Web Proxy Viewer  |  New URL  |  Original Page