JavaScript 任务和事件循环
js是单线程的,处理任务是一件接着一件处理,所以如果一个任务需要处理很久的话,后面的任务就会被阻塞,所以 JS 通过 Event Loop 事件循环的方式解决了这个问题。 First 首先来看下面一段代码: console.log('script start'); setTimeout(function() { console.log('setTimeout'); }, 0); Promise.resolve().then(function() { console.log('promise1'); }).then(function() { console.log('promise2'); }); 这段代码打印的结果是:'script start', 'promise1', 'promise2', 'setTimeout' 执行栈 js引擎开始运行代码的时候,会将代码压入执行栈进行执行: function a() { console.log('a'); } function b() { a(); } function c() { b(); } c(); 当代码被解析后,函数会依次被压入到栈中 当函数c执行完,开始出栈 事件循环 当执行栈中出现异步代码会怎么样? console.log("sync"); $.on('button', 'click', function onClick() { setTimeout(function timer() { console.log('You clicked the button!'); }, 2000); }); setTimeout(function timeout() { console.log("Click the button!...