理解javascript中的异步回调

重要的事情说三遍

异步回调时两个概念,一个是异步,一个是回调!!!

异步回调时两个概念,一个是异步,一个是回调!!!

异步回调时两个概念,一个是异步,一个是回调!!!

javascript的回调

回调就是把函数体作为参数传递给另一个函数 在另一个函数体中执行这个回调函数

function displayHighter10(num){
    console.log(num,'是大于10的数字')
}

function callback(num,displayLower10,displayHighter10){
    if(num<10){
        console.log(displayLower10)
        displayLower10(num)
    }else{
        displayHighter10(num)
    }
}
// 参数2,参数3都是传过去的函数体,在callback函数中再去执行传过的函数体
callback(1,function displayLower10(num){
    console.log(num,'是小于10的数字')
},displayHighter10);

javascript异步机制

宏任务和微任务

 

异步任务是不会进入主线程,而是会先进入任务队列,任务队列其实是一个先进先出的数据结构,

也是一个事件队列,比如说文件读取操作,因为这是一个异步任务,因此该任务会被添加到任务队列中,

(主线程之外,还存在一个任务队列,只要异步任务有了结果,就会在任务队列中放置一个事件)

等到IO完成后,就会在任务队列中添加一个事件,表示异步任务完成啦,可以进入执行栈啦~

但是这时候,主线程不一定有空,当主线程处理完其它任务有空时,就会读取任务队列,

读取里面有哪些事件,排在前面的事件会被优先进行处理,如果该任务指定了回调函数,

那么主线程在处理该事件时,就会执行回调函数中的代码,也就是执行异步回调任务啦

单线程从任务队列中读取任务是不断循环的,每次执行栈被清空后,

都会在任务队列中读取新的任务,如果没有任务,就会等待,

直到有新的任务,这就叫做任务循环,因为每个任务都是由一个事件触发的,因此也叫做事件循环

异步回调的结合promise

promise详解大家可以看看mdn文档的详细介绍

在这里我想说他是es6中对于异步和回调的结合

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值