let oJ = 12;

console.log('1--');

let pro = new Promise(function(resolve, reject){

    console.log('2--');

    setTimeout(function(){

        console.log('3--');

    }, 0);

    if(oJ === 12){

        resolve();

    }else{

        reject();

    }

})

console.log('4--');

pro.then(function(){

    console.log('ok');

}, function(){

    console.log('fail');

});

setTimeout(function(){

    console.log('5--');

}, 0);

</script>

/*

执行结果:

1–

2–

4–

ok

3–

5–

*/


执行该结果的原因:  

第一个console.log(1)是同步任务,直接执行,  

遇到new Promise内部的console.log(2)是同步任务,直接执行,  

遇到setTimeout是宏任务,加入宏任务的event table中,并注册函数,当时间片执行结束,再将该回调函数加入event queue中,  

遇到console.log(4)是同步任务,直接执行,  

遇到pro.then是微任务,加入微任务的event queue队列中,  

遇到setTimeout是宏任务,加入宏任务的event table中,并注册函数,当时间片执行结束后,加入event queue,  

此时,同步任务已经执行完毕,找到微任务的event queue,然后执行,则执行console.log(‘ok’),微任务event queue中已经没有任务,开始执行宏任务的event queue,由于时间片已经轮转完毕,执行回调函数,console.log(3),再执行console.log(5)`遵循FIFO`

### [](

)宏任务和微任务

**宏任务:** 例如`setTimeout`和`setTimeInterval`  

**微任务:** 例如`promise.then()`和`process.nextTick()`

console.log(‘1’);

setTimeout(function() {

console.log('2');

process.nextTick(function() {

    console.log('3');

})

new Promise(function(resolve) {

    console.log('4');

    resolve();

}).then(function() {

    console.log('5')

})

})

/*

执行顺序:

1

2

4

3

5

*/



解释结果顺序:  

执行同步任务,1输出,  

setTimeout加入宏任务的event table中,并注册函数,等时间片结束后进入宏任务的event queue,  

此时同步任务执行完毕,且没有微任务,执行宏任务的event queue,  

console.log(2)同步任务执行输出,process加入微任务的event queue队列中,console.log(4)同步任务输出,then微任务,加入微任务的event queue队列。  

宏任务执行完毕,开始执行微任务,process的console.log(3),再执行then的console.log(5),微任务执行完毕,  

### React

*   介绍一下react

*   React单项数据流

*   react生命周期函数和react组件的生命周期

*   react和Vue的原理,区别,亮点,作用

*   reactJs的组件交流

*   有了解过react的虚拟DOM吗,虚拟DOM是怎么对比的呢

*   项目里用到了react,为什么要选择react,react有哪些好处

*   怎么获取真正的dom

*   选择react的原因

*   react的生命周期函数

*   setState之后的流程

*   react高阶组件知道吗?

*   React的jsx,函数式编程

*   react的组件是通过什么去判断是否刷新的

*   如何配置React-Router

*   路由的动态加载模块

*   Redux中间件是什么东西,接受几个参数

*   redux请求中间件如何处理并发

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://ali1024.coding.net/public/P7/Web/git)**

![](https://s2.51cto.com/images/20210924/1632414853708598.jpg)