美文网首页
同步异步编程,微任务/宏任务

同步异步编程,微任务/宏任务

作者: 小柠有点萌 | 来源:发表于2020-06-10 20:51 被阅读0次

同步异步编程

同步异步编程
image.png js单线程编程异步

异步的有 : 定时器 事件绑定 Promise/async/await Ajax异步请求数据
先执行同步,期间遇到异步会加入到任务队列,待同步执行完,异步中根据时间来判断哪个先执行,1356742

阻断先执行到达时间的

循环中插定时器


image.png

两种理解:1.设置定时器 到达时间(此时不管GUI是否完成),放入到队列(队列中存放的顺序就是最后要执行的顺序),最后GUI空闲,执行的顺序直接按照先进先出处理即可。2.设置定时器 直接放入到队列 浏览器开始监听计时 根据到达时间调整任务的优先级,后期GUI空闲下来,去任务队列中按照优先级去处理

image.png

微任务/宏任务

image.png

题目

function func1(){
    console.log('func1 start');
    return new Promise(resolve=>{
        resolve('OK');
    });
}
function func2(){
    console.log('func2 start');
    return new Promise(resolve=>{
        setTimeout(()=>{
            resolve('OK');
        },10);
    });
}

console.log(1);
setTimeout(async () => {
    console.log(2);
    await func1();
    console.log(3);
}, 20);
for (let i = 0; i < 90000000; i++) {} //循环大约要进行80MS左右
console.log(4);
func1().then(result=>{
    console.log(5);
});
func2().then(result=>{
    console.log(6);
});
setTimeout(() => {
    console.log(7);
}, 0);
console.log(8);
image.png

相关文章

  • 同步异步编程,微任务/宏任务

    同步异步编程 异步的有 : 定时器 事件绑定 Promise/async/await Ajax异步请求数...

  • JavaScript 异步编程

    同步模式与异步模式 时间循环与消息队列 异步编程的几种方式 Primise异步方案 宏任务 /微任务队列 Ge...

  • 异步操作

    同步任务/异步任务,微任务/宏任务ajaxPromisegeneratorawait/async js是单线程的,...

  • JavaScript事件循环机制

    JavaScript单线程执行 同步栈执行完成后,再执行异步队列 异步队列中分为宏任务和微任务 微任务比宏任务优先...

  • js 异步执行顺序

    js的执行顺序,先同步后异步异步中任务队列的执行顺序: 先微任务microtask队列,再宏任务macrotask...

  • 事件循环(event loop)

    宏任务和微任务 任务队列中都是已完成的异步操作。在当前的微任务没有执行完成时,是不会执行下一个宏任务的。在同步代码...

  • 8,setTimeout、Promise、Async/Await

    KeyWords:宏(微)任务队列、阻塞非阻塞(强调线程状态)、同步异步强调一种“机制”任务是连续的(同步)、不连...

  • 微任务和宏任务@小四@王云飞

    微任务和宏任务 微任务 和 宏任务 表示异步任务的两种分类。 微任务(microtask)和宏任务(macrota...

  • 中高级前端面试题

    事件循环机制 同步:执行栈 异步:任务队列 1.宏任务 点击回调 settimeout 2.微任务 当前task执...

  • js事件循环机制

    js事件循环机制 一、 执行栈 二、 任务队列(同步任务和异步任务) 三、 宏任务和微任务 四、 浏览器下的事件循...

网友评论

      本文标题:同步异步编程,微任务/宏任务

      本文链接:https://www.haomeiwen.com/subject/aggqtktx.html