JavaScript基础: 异步

一、单线程和异步

  1. JS是单线程语言,只能做一件事;
  2. 浏览器和nodejs已支持JS启动进程,如 web worer;
  3. JS和DOM渲染共用同一个线程,因为JS可修改DOM结构;
  4. 遇到等待(网络请求,定时任务)不能卡住;
  5. 需要异步;
  6. 回调callback函数形式

阅读我的另一篇文章,更加详细。

郭宇-JavaScript的执行原理

// 异步 callback 回调函数
console.log(100)
setTimeout(() => {
  console.log(200)
}, 1000)
console.log(300)
console.log(400)

 如果是同步呢,就会卡住,比如

 打印出100,然后alert出200,卡住,点ok之后,300才打印出来。alert的时候,浏览器不会继续渲染,js也不会继续执行。---【这就是 同步】

  1. JS是单线程语言
  2. 异步不会阻塞代码执行
  3. 同步会阻塞代码执行

二、应用场景

  1. 网络请求,如ajax图片加载等
  2. 定时任务,如setTimeout
console.log('start')
$.get('./data.json', function(data) { console.log(data) })
console.log('end')
console.log('start')
let img = document.createElement('img')
img.load = function() { console.log('loaded') }
img.src = '/xxx.png'
console.log('end')

三、promise

 

猜你喜欢

转载自blog.csdn.net/GY_U_YG/article/details/125316722