纯个人理解 通俗解释 JavaScript (异步)执行机制

153 阅读1分钟

JavaScript 是单线程的,困扰最大的就是异步函数的问题;

Js的正常执行机制相信在座的各位都已经了然于胸,我们今天就谈谈我个人对于异步函数的执行机制的理解;

异步函数执行顺序如下:
    任务进入执行栈;
    
    异步任务进入EvEnt Table(事件表);
    
    异步任务执行完毕后注册回调方法;
    
    异步任务移入Event Queue(事件队列当中);
    
    主线程任务列表任务执行空后,进入Event Queue 中提取任务(提取顺序 与排队顺序相同)
    (也可将提取理解为指派  Event Queue 将任务指派过去);
    
    主线程执行;
    
    上述过程会不断重复,也就是常说的Event Loop(事件循环);

举个例子 上代码:
        setTimeout(function(){
	    console.log('1')
	},0);
	
	new Promise(function(resolve){
	    console.log('2');
	resolve();
	}).then(function(){
	    console.log('3')
	});
	console.log('4');

执行结果为 2431 也就是说插入Event Queue 的排队顺序 也是 2431