# 异步跟同步
# 异步和单线程
# 题目
# 同步和异步的区别是什么
- JS 是单线程语言,只能同时做一件事
- 浏览器和 nodejs 已经支持 JS 启动进程,如 Web Worker
- JS 和 DOM 渲染共用同一个线程,因为 JS 可修改 DOM 结构
- 遇到等待(网络请求,定时任务)不能卡住
- 需要异步
- 基于 JS 是单线程语言
- 异步不会阻塞代码执行
- 同步会阻塞代码执行
console.log(100)
setTimeout(() => {
console.log(200)
}, 1000);
console.log(300)
# 回调 callback 函数形式
# 手写用 Promise 加载一张图片
# 前端使用异步的场景
- 网络请求,如 ajax 图片加载
// 图片加载
ocnsole.log('start')
let img = document.createElement('img')
img.onload = function () {
console.log('loaded')
}
img.src = '/xx.png'
console.log('end')
- 定时任务,如 setTimeout、setInterval
阅读量: