ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 同步和异步 同步和异步的概念发生在两个程序的交互上。 当程序A向程序B发出请求后: * 如果程序A在程序B返回结果后才执行下一条语句,那么这种方式是同步。 * 如果程序A不等待程序B返回而直接执行下一条语句,那么这种方式是异步。 异步并不是不处理程序B的返回结果,而是选择预先部署一个函数,等到程序B返回后且程序A空闲时触发该函数。 在浏览器中使用异步的例子: ~~~ setTimeout(function () { console.log('async'); }, 100); console.log('sth...'); ~~~ ![](https://box.kancloud.cn/05bd2e4e33d224a42f2434385713a555_148x46.jpg) 这种由异步触发的函数被称为异步回调函数,简称异步回调。 另一个常用的异步操作就是ajax,具体此处不再详述。 # 任务队列 JS是如何实现异步的? JS内部有一个顺序容器,每当有一个异步回调可以被触发,将加入到容器里的尾部。当JS执行完所有代码,就会从那个容器的头部取出一个函数来执行。因为这种特性,我们把该容器称为任务队列。 用代码模拟任务队列: ~~~ var main = function (code) { var task = [];//每当有一个可触发的异步回调就task.push(p); eval(code); while (true) { if (task.length !== 0) { var p = task.shift(); p(); } }; } main(all.js) ~~~