@historydev
Редактирую файлы с непонятными расширениями

Можно ли по этому примеру сказать что я понял event loop?

MS - микро задачи
MC - макро задачи

function test(num) {
	console.log(`#${num}`);
}

Promise.resolve().then(setTimeout(() => test(4) /* MS1 */, 1000) /* MC5 */); // MC1

setTimeout(() => test(1) /* MS2 */,1000); // MC2
setTimeout(() => test(2) /* MS3 */,0); // MC3
setTimeout(() => test(3) /* MS4 */,2000); // MC4

const p = new Promise(

  (resolve) => { 
    setTimeout(() => resolve() /* MS6 */, 1000); // MC7
  } // MS5
  
); // MC6

p.then(() => test(5) /* MS7 */);

/* Queue

	MC5 => MS1
	MC1 => MC5
  MC2 => MS2
  MC3 => MS3
  MC4 => MS4
  MC6 => MS5 => MC7
  MC7 => MS6 => MS7
  
  
  result: 
  	#2
    #4
    #1
    #5
    #3
  
*/


И ещё, конкретно в этом участке.

Promise.resolve() - это микро задача, порождающая микро задачу, порождающая макро задачу, которая порождает микро задачу или =>
Promise.resolve() - это макро задача, порождающая микро задачу, порождающая макро задачу, которая порождает микро задачу?

Promise.resolve().then(setTimeout(() => test(4) /* MS1 */, 1000) /* MC5 */); // MC1
  • Вопрос задан
  • 404 просмотра
Пригласить эксперта
Ответы на вопрос 1
batowski
@batowski
Я думаю вы слишком усложнили понимание event loop.
Это лишь механизм для управления асинхронным кодом.
Позволяющий отслеживать готовность выполнения кода.

Вот простой пример:

console.log('Start');

// Асинхронная функция, возвращающая промис
const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));

// Использование промиса с задержкой в 2 секунды
delay(2000)
  .then(() => {
    console.log('Promise resolved');
  });

// Синхронная функция
console.log('End');


Как только функция delay завершит выполнение, она вернет промис с результатом.

Удобство event loop в том, что бы понимать когда код будет закончен, для ваших последующих действий.

С тем какая именно будет логика выполнения вашего кода, ничего общего event loop не имеет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект