Asynchronous
题目:
- 同步和异步的区别是什么
- 手写用promise加载一张图片
- 前端使用异步的场景有哪些
//setTimeout
console.log(1)
setTimeout(function(){
console.log(2)
},1000)
console.log(3)
setTimeout(function(){
console.log(4)
},0)
console.log(5)
知识点
- 单线程和异步
- 应用场景
- callbacck hell 和Promise
JS是一个单线程语言,只能同时做一件事
- 浏览器和nodejis已支持js启动进程
- JS和DOM渲染共用同一个线程,因为JS可以修改DOM结构
- 遇到网络等待,定时任务,浏览器不能卡住
所以需要异步
基于callback函数形式
异步不会阻塞代码执行
同步会阻塞代码执行
//异步
console.log(100)
setTimeout(function(){
console.log(200)
},1000)
console.log(300)
//同步
console.log(100)
alert(200)
console.log(300)
应用场景
- 网络请求,如ajax图片加载
定时任务,如setTimeout
//ajax console.log('start') $.get('./data1.json',function(data1){ console.log(data1) }) console.log('end') //图片加载 console.log('start') let img = document.createElement('imag) img.onload =function(){ console.log('loaded') } img.src='/xxx.png' console.log('end')
//setTimeout
console.log(100)
setTimeout(function(){
console.log(200)
},1000)
console.log(300)
//setInterval
console.log(100)
setInterval(function(){
console.log(200)
},1000)
console.log(300)