异步概念

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:

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

从片段中调用分离的异步任务类

Android 我应该在异步任务中将片段作为弱引用传递吗?

屏幕方向期间片段内的异步任务

我应该在 Fragment 中的啥生命周期状态下执行异步任务?

在 TabLayout 和 ViewPager2 中执行异步任务后更新具有相同布局的多个片段

javascript 异步片段