当函数返回时, 调用者能够拿到预期结果, 则称该函数是同步 (synchronous) 的, 反之称该函数是异步 (asynchronous) 的. 就是说, 在主线程内完成的任务是同步的, 主线程外产生额外线程的任务是异步的.

下面这篇文章有一个很形象的比喻:

JavaScript:彻底理解同步、异步和事件循环(Event Loop)

同步:

ajax 默认是异步的.

异步:

异步和多线程的关系可以这么概括: 异步是目的, 多线程是异步的一种手段.

可见, 异步操作时, A 不能在调用函数返回时得到预期结果. 但如果在 A 中需要用到调用函数的返回结果怎么办呢? JavaScript 中的解决方法有若干程, 最常用的是回调函数:

消息队列是先进先出的.

分类: 前端

发表评论

电子邮件地址不会被公开。 必填项已用*标注