javaScript 的异步
JS是单线程,代码是从上往下依次执行的视频地址
异步编程
- 同步模式与异步模式
- 异步编程的几种方式
- promise 异步方案
- Async/Await
同步执行过程:代码从上往下依次进栈出栈。直至调用栈被清空,整个代码运行结束。
调用栈,函数是调用执行的。入栈出栈的形式
异步执行模式:
Event loop(事件轮询)
当全局调用栈空了以后,就会去队列里面找有没有任务需要执行,如果此时队列里面有任务,紧接着该任务会入调用栈执行,执行,并出栈。
等待当前本轮任务全部执行完毕,Event loop 才回去执行。就算事件到了,也需要在消息队列中等待执行。
关键点:我们在上下环境执行时,需要我们异步产生的结果。
异步任务的结果需要在本轮任务执行。
回调函数:异步结果解决方案
函数的调用需要回到函数声明的地方;回调函数,在异步执行我执行的函数。
promise
状态:
- pending
- fufiiled
- rejected
Async/Await:Generator 语法糖
finction* foo(){
console.log('test1')
}
const gener = foo()
const yeild = genner.next();
正常函数调用就用了,但是gennerator 是一个生成器,不会立马执行。生成器对象有一个方法,next();当调用next()
时才会执行里面的代码。
yeild 关键字。一次next就执行到yeild关键字。