异步概念
Posted yt0817
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异步概念相关的知识,希望对你有一定的参考价值。
开个QQ,开了一个进程;开了迅雷,开了一个进程。在QQ的这个进程里,传输文字开一个线程、传输语音开了一个线程、弹出对话框又开了一个线程。所以运行某个软件,相当于开了一个进程。在这个软件运行的过程里(在这个进程里),多个工作支撑的完成QQ的运行,那么这“多个工作”分别有一个线程。所以一个进程管着多个线程。
同步:任务是一个接着一个执行的,上一个任务执行完成后才能执行下一个任务。即在同一时间只能做一件事。这种one by one的动作就是同步。
异步:是js单线程这种语言解决多任务的一种方法,将耗时的操作设为异步,先交给浏览器相关的线程,来实现这部分耗时的工作。而主线程继续依次执行任务(one by one同步)不阻塞代码,后续通过通知的方式来实现异步任务的其他代码执行(当主线程的所有代码都执行完成后)
进程:简单理解为一个cpu在单一时间运行一个进程,其他进程处于非运行状态(一个进程理解为一个工厂的一个车间)(单个CPU一次只能运行一个任务。)
线程:一个进程可包含多个线程(.一个车间里,可以有很多工人。他们协同完成一个任务)
js是单线程异步非阻塞语言。
示例:
console.log("start"); setTimeout(function(){ console.log("timeout"); },5000); console.log("end");
//执行结果如下
start
end
//等待5秒后
timeout
异步执行流程图:执行栈+功能性线程(事件线程,事间线程,ajax线程)+任务队列(存放异步的回调函数)+事件循环loop:
以上是关于异步概念的主要内容,如果未能解决你的问题,请参考以下文章
我应该在 Fragment 中的啥生命周期状态下执行异步任务?