Sobes.tech
Middle+

/* Ko tiks parādīts konsolē */ async function f() { console.log(1); const promise = new Promise((resolve) => { console.log(2); setTimeout(() => { console.log(3); resolve("gatavs!"); console.log(4); }); }); console.log(5); const result = await promise; console.log(6); console.log(result); return "Rezultāts"; } f(); console.log(7);

sobes.tech AI

Atbilde no AI

Apskatīsim konsoles izvades secību:

async function f() {
  console.log(1); // 1
  const promise = new Promise((resolve) => {
    console.log(2); // 2
    setTimeout(() => {
      console.log(3); // 3 (aptuveni 0 ms)
      resolve("gatavs!");
      console.log(4); // 4
    });
  });
  console.log(5); // 5

  const result = await promise; // gaidām solījuma izpildi
  console.log(6); // 6
  console.log(result); // "gatavs!"
  return "Rezultāts";
}

f();
console.log(7); // 7

Izvades secības skaidrojums:

  1. console.log(1); — sinhroni
  2. console.log(2); — sinhroni, veidojot solījumu
  3. console.log(5); — sinhroni pēc solījuma izveides
  4. console.log(7); — sinhroni pēc f() izsaukuma

Tad aktivizējas setTimeout (mikrouzdevums):

  1. console.log(3);
  2. console.log(4);

Pēc solījuma izpildes ar resolve, tas pāriet uz stāvokli fulfilled, un await turpina izpildi:

  1. console.log(6);
  2. console.log(result); — parāda "gatavs!"

Kopējā izvades secība ir:

1
2
5
7
3
4
6
gatavs!