几句话看懂同步和异步的区别

hello,小伙伴们,初次在掘金见面,我今天给大家分享的文章是,JavaScript中的同步和异步的区别,之前也一直在理解这个同步和异步,不过是迷迷糊糊的,也是最近才把这个区别给弄明白。

JavaScript单线程理解

单线程模型指的是,JavaScript 只在一个线程上运行。也就是说,JavaScript同时只能执行一个任务,其他任务都必须在后面排队等待。

注意,JavaScript 只在一个线程上运行,不代表JavaScript引擎只有一个线程。事实上,JavaScript引擎有多个线程,单个脚本只能在一个线程上运行(称为主线程),其他线程都是在后台配合。

例子:这个线程,我们可以理解为去银行排队办理业务,我们排在队伍里面,只有前面的人把业务办理完成后,我们才能进行业务办理哦。这里可以这么理解这个线程。

同步任务

看下面这个简单的例子

function a(){
    console.log('a')
}

function b(){
    console.log('b')
}
a()
b()
复制代码

最后打印出来的结果就是 a b 先执行a函数,再执行b函数。

下面如果我们给a函数设置一个延时,那么a函数会等待这个延时。

setTimeout(function a(){
    console.log('a')
}, 500)

function b(){
    console.log('b')
}

b()
复制代码

结果是先出现b再打印出a这个例子就是我们一般的异步操作。

异步

说到异步操作就要说一下这个回调函数

function f1(){
    ...
}

function f2(){
    ...
}
f1()
f2()

如果f1是异步操作,那么f2会直接执行,那么就不用等待f1了

我们来修改成回调函数

function f1(callBack){
    callBack()
}

function f2(){
    ...
}

f1(f2)

复制代码

回调函数的优点是简单、容易理解和实现,缺点是不利于代码的阅读和维护,各个部分之间高度耦合(coupling),使得程序结构混乱、流程难以追踪(尤其是多个回调函数嵌套的情况),而且每个任务只能指定一个回调函数。

这就是我对同步和异步的理解,如若有有什么问题,欢迎大家指出来哈,我们一同学习进步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值