JS中的异步编程

2019-12-03  本文已影响0人  Leonard被注册了

JS中的同步编程和异步编程


定时器:设定一个定时器,并且设定了等到的时间,当到达执定的时间,浏览器会把对应的方法执行

let count = 0;
let timer = setInterval(() => {
    count++;
    console.log(count);    // 1 2 3 4 5
    if (count === 5) {
        //=>清除定时器
        clearTimeout(timer);
    }
}, 1000);
console.log(timer);    // 1

回调函数:把一个函数A当做实参专递给另外一个函数B,在B方法执行的时候,把A执行了,这种机制叫做 “回调函数机制”

1.根据需求回调函数可以被执行N多次
2.不仅可以把回调函数执行,还可以给传递的回调函数传递实参,这样在回调函数中设置形参(或者使用ARG)接收即可
3.还可以改变回调函数中的THIS指向
4.可以在宿主函数(它在哪执行的,它的宿主函数就是谁)中接收回调函数执行的返回结果


浏览器是如何规划同步异步机制的

1.浏览器是多线程的,JS是单线程的(浏览器只给JS执行分配一个线程):单线程的特点就是一次只能处理一件事情
2.JS在单线程中实现异步的机制,主要依赖于浏览器的任务队列完成的。浏览器中有两个任务队列(主任务队列、等待任务队列
3.在主任务队列自上而下执行的过程中,如果遇到一个异步操作任务,不会立即执行,而是将其放至等待任务队列中进行等待
4.当主任务队列中的任务完成之后,才会到等待任务队列中进行查找任务
5.等待任务队列中谁先达到条件了(假设寻找时,多数都达到条件了,则先达成条件的优先),就把该任务重新放到主任务队列中执行,执行完毕后再去等待队列中查找,以此类推

上一篇 下一篇

猜你喜欢

热点阅读