Skip to content

EventLoop 示例

javascript
new Promise((resolve, reject) => {
    console.log("0");
    resolve();
}).then(() => {
    console.log('6');

    setTimeout(() => {
        console.log("3");
    }, 100);
});

setTimeout(() => {
    console.log("1");
    new Promise((resolve, reject) => {
        console.log("7");
        resolve();
    }).then(() => {
        setTimeout(() => {
            console.log("5");
        }, 50);
    });
}, 300);
setTimeout(() => {
    console.log("2");
}, 200)

console.log("4");

// 同一批次中的宏任务  按时间先后

// 0  4  6  3  2  1  7  5

// 微   7
// 宏   5




new Promise((resolve, reject) => {
    console.log("0");
    resolve();
}).then(() => {
    console.log('6');

    setTimeout(() => {
        console.log("3");
    }, 400);
});

setTimeout(() => {
    console.log("1");
    new Promise((resolve, reject) => {
        console.log("7");
        resolve();
    }).then(() => {
        console.log('8');

        setTimeout(() => {
            console.log("5");
        }, 50);
    });
}, 300);
setTimeout(() => {
    console.log("2");
}, 200)

console.log("4");

// 0  4  6  2  1  7  8 5  3

// 微 
// 宏   


// 另一种方式   宏任务按照时间先后往里面放
// 0 4  6  2  1  7  8  5  3 

// 1. 
// 0 4
// 微: 6
// 宏: 1(300)  2(200)
// 2.
// 0  4  6
// 微:
// 宏: 1(300)  2(200) 3(400)
// 3.
// 0 4  6  2  1  7
// 微:8
// 宏:3(400)
// 4.
// 0 4  6  2  1  7 8
// 微:
// 宏:3(400) 5(50)
// 5.
// 0 4  6  2  1  7 8 5  3
// 微:
// 宏:3(400) 5(50)

made with ❤️ by ankang