前言
因为自己淋过雨,所以想给别人撑把伞。
在这一节,因为主要目标对象是刚学异步的小白同学,所以笔者打算用更通俗的语言来简单梳理一下这方面的内容。😋
同步与异步
既然要谈异步的发展历程,这里当然也要提到一下同步和异步的概念了
什么是同步?
同步就是后一个任务等待前一个任务执行完毕后,再执行,执行顺序和任务排列顺序一致
下面就是同步
console.log('hello 0')
console.log('hello 1')
console.log('hello 2')
// hello 0
// hello 1
// hello 2
什么是异步?
如果在函数返回的时候,调用者还不能够得到预期结果,而是需要在将来通过一定的手段得到,那么这个函数就是异步的。
setTimeout(() => {console.log('hello 0')
}, 1000)
console.log('hello 1')
// hello 1
// hello 0
我们为什么要引入异步这个概念呢?
引入一个新的概念当然是为了解决一个特定的问题的。
比如我们加载页面,如果我们需要获取后台数据来渲染到页面上,但是下面还有好多要执行的操作,也许网络延迟,我们这个没获取到,后面的代码是执行不了的,那么页面就会白屏,非常影响用户体验。而异步则不会,我们不会等待异步代码的之后,继续执行异步任务之后的代码。
通俗解释
:
就好比你追一个女孩子,追了人家好几年了,但人家一直对你不温不火,没有一个具体的答复。所以这个时候就有人会劝你:不要为了一颗树木而放弃整片森林呀。不能在一棵树上吊死,而应该继续走下去。 (有些不严谨😁,因为太俗了)
回调函数 Callback
什么是回调函数?
在MDN的文档中,对callback()
的定义为:
被作为实参传入另一函数,并在该外部函数内被调用,用以来完成某些任务的函数,称为回调函数。
简单理解: