代码已经过测试。
知识点一:js的事件循环Event Loop
js是单线程执行的。js的执行机制把任务分为两类:同步任务、异步任务。
同步任务先执行,执行过程中遇到异步任务,就将其放入任务队列当中,继续执行同步任务。同步任务执行完之后,再去检查任务队列中要处理的异步任务。
具体的关于Event Loop的内容参考文章:并发模型与事件循环
知识点二: setTimeout
函数setTimeout接受两个参数:待加入队列的消息和一个延迟(可选,默认为 0)。这个延迟代表了消息被实际加入到队列的最小延迟时间。如果队列中没有其它消息,在这段延迟时间过去之后,消息会被马上处理。但是,如果有其它消息,setTimeout
消息必须等待其它消息处理完。因此第二个参数仅仅表示最少延迟时间,而非确切的等待时间。
接下来开始看具体题目
测试1: