利用同步、异步和回调函数知识理解各函数的执行顺序

同步(sync):刷牙、洗脸,不能同时进行
异步(async):洗脸、烧水,同时进行
把一个进程比作一个进度条
同步只有一个进度条,一个接着一个,刷完牙再洗脸。
异步有两个进度条,一个进度条用来洗脸,一个进度条用来烧水。
————————————————————————————————————————————————————————————————————————————————————————

function(){
 console.log("执行a函数")
 setTimeout(function(){
   console.log("执行a的延迟函数",1500)
})
};

function(){
 console.log("执行b函数")
};
a();
b();

最后的打印结果:
执行a函数
执行b函数
执行a的延迟函数
异步就是执行一个函数的同时不会死等延迟函数就执行。
————————————————————————————————————————————————————————————————————————————————————————

再例如:

var a = 0
 
function b(x) {
    console.log(x)
}
 
function timer(time) {
    setTimeout(function () {
        a=6
    }, time);
}
 

//调用:
console.log(a)//输出0
timer(3000)//time赋值为3000,执行延迟函数,使a变为6
b(a)//遗憾的是,a还是0,输出的结果0,a并没有变为6,是因为函数的执行不会死等延迟函数。

————————————————————————————————————————————————————————————————————————————————————————

而回调函数就能解决这个问题

首先解释一下回调函数的定义
回调函数是指一个函数作为参数被另一个函数调用。
例如a(b()),b()函数是a()函数的参数
执行顺序是:先执行a()函数,再返回来执行b()函数。

例:

function a() {
    return 1
}
 
function b(a()) {
    return 2 + a()
}
 

//调用:
var c=0
c = b(a()) //A是个函数,但它又作为一个参数在B函数中被调用
console.log© //结果显示3
————————————————————————————————————————————————————————————————————————————————————————
例:

var a = 0
 
function b(x) {
    console.log(x)
}
 
function timer(time, callback) {
    setTimeout(function () {
        a = 6
        callback(a);//此时这里多出了一个回调函数,按照上面的b(a())的a()函数作为b()函数的参数的原则,callback(a)函数作为timer()的参数,所以就先执行timer延迟,再执行力了回调函数。
    }, time);
}
 

//调用:
console.log(a)//输出0
timer(3000,b)//a已经变成了6
b(a)//输出6

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值