likes
comments
collection
share

个人对异步的一些理解

作者站长头像
站长
· 阅读数 56

异步编程

简单来理解就是:同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高。

以上是关于异步的概念的解释,接下来我们通俗地解释一下异步:异步就是从主线程发射一个子线程来完成任务。

同步编程

严格按照从上往下顺序执行

console.log("Start");
console.log("Show Data");
console.log("End");

/*
		这就是一个同步的代码
		
		按顺序执行
*/
回调函数

在JS中 只要有异步的地方就会有回调函数的存在。

回调函数就是一个函数,它是在我们启动一个异步任务的时候就告诉它:等你完成了这个任务之后要干什么。

这样一来主线程几乎不用关心异步任务的状态了,他自己会善始善终。

异步案例

假设我要做如下三件事

用同步编程的方式来做的话就是先打扫卫生,然后洗衣服,这样效率非常低。

个人对异步的一些理解

如果用时器来模拟的话就是:

setTimeout(() => {
    console.log("打扫卫生");
}, 4000);

setTimeout(() => {
    console.log("洗衣服");
}, 3500);

setTimeout(() => {
    console.log("做饭");
}, 2000);

等一件事情做完再到下一件事情,这样用的时间非常的多,效率非常低。

OK重点来了,我可以把打扫卫生交给扫地机器人、衣服交给洗衣机、用电饭锅来做饭。

然后躺在沙发上打王者,任务结束了提示一下我去处理。

// 用扫地机器人来做这件事
function clean(callback) {
    setTimeout(() => {
        let msg = "叮,给您打扫干净了。。。";
        callback(msg);
    }, 4000);
}


// 衣服交给洗衣机
function wash(callback) {
    setTimeout(() => {
        let msg = "叮,衣服已经洗好了。。。。";
        callback(msg);
    }, 3500);
}

// 做饭交给电饭锅
function cook(callback) {
    setTimeout(() => {
        let msg = "叮,饭已经熟了。。。。";
        callback(msg);
    }, 2000);
}

// 回调函数 设备完成任务了通知一下你
function callback(data) {
    console.log(data);
}


// 开始干活
clean(callback);
wash(callback);
cook(callback);


/*
		>>>	叮,饭已经熟了。。。。
				叮,衣服已经洗好了。。。。
				叮,给您打扫干净了。。。
*/

总结:看吧,这么一个小小的案例,谁先完成任务就使用 callback() 回调函数通知一下我,放到真实的网页案例中也是这样。

​ 假如我打开一个网页,里面有很多张图片要加载。。。总不能等一张加载完了到下一张吧,谁先加载完就使用回调函数,回调函数

把图片的路径信息返回出来,那既然有了图片的路径信息,

转载自:https://juejin.cn/post/6884504295413121038
评论
请登录