前言
其实早期的 JavaScript 本身并没有提供异步功能,但 Web 应用不断发展,需要这样一种机制去强化自身的表现能力。这篇文章,我们就来看看如何用 JS 实现异步编程,以及异步编程能做什么。
1 什么是异步?
在具体地说 JS 异步之前,我想还是简单来说一下,什么是异步。这个东西我们在实践中时常使用,概念也不复杂,我觉得随便想一想就能举出很多例子。
比如游乐场排队,如果只有一个项目,所有人先来后到,就叫同步。如果有很多项目,虽然每个项目前排队的人群还是先来后到,但不同项目的队伍是自己排自己的,这就叫 异步。
说到这里大家可能觉得,同步和异步不就是单线程和多线程吗?没错,使用多线程可以实现异步。然而,异步并不完全是这个意思。
第二个例子,对于我们每个人来说,虽然并不能在 “同一时刻” 处理多件事情,是 “单线程” 的,但并不一定非要把一件事完全处理完,才能干下一件事,我们完全可以在学习途中被基友突然叫去打游戏,打完回来再接着学,这也叫异步。
异步这个概念其实源自于通信学科,指的是通信双方不需要共同的时钟即可完成信息交换。相对的,同步就是指两方要有一致的时钟。
如果我们对编程中的异步下一个简单粗暴的定义,那就是,让代码不必按照书写顺序执行。
异步的好处,说白了就是两个字,灵活。