异步,闭包和fetch

Posted wcphahaha

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异步,闭包和fetch相关的知识,希望对你有一定的参考价值。

js是单线程语言,单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。

如果排队是因为计算量大,CPU忙不过来,倒也算了,但是很多时候CPU是闲着的,因为IO设备(输入输出设备)很慢(比如Ajax操作从网络读取数据),不得不等着结果出来,再往下执行。

javascript语言的设计者意识到,这时主线程完全可以不管IO设备,挂起处于等待中的任务,先运行排在后面的任务。等到IO设备返回了结果,再回过头,把挂起的任务继续执行下去。

于是,所有任务可以分成两种,一种是同步任务(synchronous),另一种是异步任务(asynchronous)。同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;异步任务指的是,不进入主线程、而进入"任务队列"(task queue)的任务,只有"任务队列"通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行。

具体来说,异步执行的运行机制如下。(同步执行也是如此,因为它可以被视为没有异步任务的异步执行。)

技术分享图片

 

闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。

 

参考博客地址:

https://www.cnblogs.com/curtain473/p/10049392.html

以上是关于异步,闭包和fetch的主要内容,如果未能解决你的问题,请参考以下文章

csharp fetch和xhr异步

React开发中使用fetch进行异步请求

Swift 闭包 [weak self] 和异步任务

异步调用的空闭包

js fetch处理异步请求

从委托的源 ViewController 调用异步闭包