JavaScript 异步编程
2021-04-25 本文已影响0人
丽__
同步模式与异步模式
时间循环与消息队列
异步编程的几种方式
Primise异步方案 宏任务 /微任务队列
Generator异步方案 Async/Await语法糖
- 同步模式
console.log('global begin')
function bar () {
console.log('bar task') }
function foo () {
console.log('foo task')
bar()
}
foo()
console.log('global end')
/*依次输出
*global begin
*foo task
*bar task
*global end
*/
- 异步模式
console.log('global begin')
setTimeout(function timer1 () {
console.log('timer1 invoke')
}, 1800)
setTimeout(function timer2 () {
console.log('timer2 invoke')
setTimeout(function inner () {
console.log('inner invoke')
}, 1000)
}, 1000)
console.log('global end')
/*依次输出
*global begin
*global end
*timer2 invoke
*timer1 invoke
*inner invoke
*/
image.png
- 回调函数:所有异步编程方案的根基
function foo (callback){
setTimeout(function(){
callback()
},300)
}
foo(function(){
console.log("这就是一个回调函数");
console.log("调用者定义这个函数,执行者执行这个函数");
console.log("其实就是调用者告诉执行者异步任务结束后应该做什么");
})
-
Promise 一种更优的异步编程统一方案
image.png