在整个html中,加载有多种,js加载,css,img,音视频,但是只有js是阻塞式同步加载,其他全部是异步加载
异步:执行需要时间,不影响后面代码的运行
同步: 需要等待
事件属于同步还是异步?
我对事件理解是,事件触发是异步过程,而事件本身是同步的。
脚本中的 async 和 defer
async: 会将脚本由阻塞式同步加载变成异步加载
defer: 将脚本延迟到页面加载后开始执行
通道阻塞:
在浏览网页中,有时看到只有文字,图片和样式都没加载出啦,这种情况是由于js阻塞式加载发生了阻塞,阻塞后css、img都无法加载上。使用阻塞式加载好处是,速度快,缺点是可能发生通道阻塞问题。
函数中的 async 和 await
1 // async 函数 2 async function abc(){ 3 return 10; 4 } 5 abc().then(function(num){ 6 console.log(num); 7 }) 8 9 // async函数执行以后返回一个promise对象 10 // async函数中return 的结果需要通过这个函数返回的promise对象中then里面的函数参数获取
// await关键词可以在async中使用,但是await只能用于promise对象的前面 async function abc(){ console.log("aaa"); // 将Promise异步转换成了阻塞式同步 await Promise.resolve().then(function(){ console.log("bbb"); }) console.log("ccc"); } abc(); //输出结果 bbb ccc