- 同步与异步:
异步:
- setTimeout,setInterval
- ajax
- 读取文件
- 单线程
- js是单线程的,一个任务执行完成才能执行另外一个任务。
- process.nextTick(()=>{}),setImmediate(()=>{})
- node 环境执行
- 执行顺序:同步>process.nextTick>异步>setImmediate
4.宏任务与微任务
- 宏任务 计时器,读取文件,ajax
- 微任务 promise.then
- 执行顺序 同步>process.nextTick>微任务>宏任务>setImmediate
async function async1() {
console.log('AAAA');
async2();
console.log('BBBB');
}
async function async2() {
console.log('CCCC');
}
console.log('DDDD');
setTimeout(function() {
console.log('FFFF');
}, 0);
async1();
new Promise(function(resolve) {
console.log('GGGG');
resolve();
}).then(function() {
console.log('HHHH');
});
console.log('IIII');
答案:
AAAA
CCCC
EEEE
IIII
HHHH
BBBB
DDDD