Sobes.tech
Middle

// Promise.resolve() // .then(() => console.log(1)) // // .then(() => console.log(2)) // // Promise.resolve() // .then(() => console.log(11)) // // .then(() => console.log(22)) //

sobes.tech AI

Ҷавоб аз AI

Дар кодда икки обещаниерзани мавжуд бўлиб, ҳар бири Promise.resolve() билан бошланади. Консолда чиқиш тартибини тушуниш муҳим.

Ҳар бир .then() ҳозирги чақирув стекидан кейин ишга тушадиган микротасклар навбатига ишловчини қўшади.

Ҳар икки занжир кетма-кет яратилганлиги учун, уларнинг ишловчилари эълон қилинган тартибда навбатга қўйилади.

Шунинг учун чиқиш қуйидагича бўлади:

1
2
11
22

Тушунтириш:

  • Биринчи .then(() => console.log(1)) ишга тушади ва 1 чиқаради.
  • Кейинги .then(() => console.log(2)) ишга тушади ва 2 чиқаради.
  • Кейин, иккинчи занжирдан .then(() => console.log(11)) ишга тушади ва 11 чиқаради.
  • Ва охирги .then(() => console.log(22)) ишга тушади ва 22 чиқаради.

Агар чиқиш аралаш ёки бошқа тартибда бўлса, ваъдалар структурасини ўзгартириш ёки setTimeoutдан фойдаланиш керак бўлади.