• 微任务与宏任务


    +setTimeout(_ => {
    -  console.log(4)
    +})
    
    +new Promise(resolve => {
    +  resolve()
    +  console.log(1)
    +}).then(_ => {
    -  console.log(3)
    +})
    
    +console.log(2)
    
    
            setTimeout(_ => console.log(4))
    
            new Promise(resolve => {
            resolve()
            console.log(1)
            }).then(_ => {
            console.log(3)
            Promise.resolve().then(_ => {
                console.log('before timeout')
            }).then(_ => {
                Promise.resolve().then(_ => {
                console.log('also before timeout')
                })
            })
            })
    
            console.log(2)
    
    
        setTimeout 作为宏任务来存在 而 Promise.then 则是 微任务 上述代码按序号输出
        所有会进入的异步都是指的事件回调中的那部分代码
        在同步代码执行完成后才回去检查是否有异步任务完成,并执行对应的回调,而微任务又会在宏任务之前执行
        继续在Promise 中实例化Promise 其输出依然会早于 setTimeout 的宏任务
    
        Event - Loop 是个啥?
    
        JavaScript是一个单线程的语言,同意时间不能处理多个任务 
    
        就像我们去银行办理业务的时候
    
        每办理完一个业务,柜员就会问当前的用户,是否还有其他需要办理的业务(检查还有没有微任务需要处理)
    
        而客户明确告诉说没有事情以后,柜员就会查看后边还有没有等着办业务的人(结束本次宏任务,检查还有没有宏任务需要处理)
    
        如果客户说还有要办理的业务(微任务) 就得接着办理,直到办理完成 (在当前的微任务没有执行完成时,是不会执行下一个宏任务的)
  • 相关阅读:
    Oracle的分区打点
    学习Struts2经验总结
    优化MVC,实现数据库表的记录的添加、删除、修改、查询。
    基于struts研究传值问题
    基于“MVC”框架集设计模式,开发用户管理系统!
    使用Struts,实现简单的登录
    QT学习4:使用窗口部件
    QT学习9:绘制函数
    QT学习8:准备战斗
    QT学习6:组装丰富的积木!
  • 原文地址:https://www.cnblogs.com/ljh--/p/10515592.html
Copyright © 2020-2023  润新知