1-1 进程和线程

1-2 知识点

  1. 1.单线程和异步
  2. 2.callback
  3. 3.应用场景
  4. 4.Promise
  5. 5.event-loop
  6. 6.async/await
  7. 7.微任务/宏任务

1-3 单线程和异步

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

因为JS是单线程语言,所以遇到等待(网络请求,定时任务)不能卡顿,所以需要异步。

异步

  1. console.log(1);
  2. setTimeout(()=>{
  3. console.log(2)
  4. },1000)
  5. console.log(3)
  6. # 异步任务是通过callback回调函数的形式调用的,异步任务不会阻塞线程。

同步

  1. console.log(1);
  2. alert(2)
  3. console.log(3)

1-4 异步应用场景

  1. 网络请求
  2. 定时任务

1-5 例子

  1. 1.同步和异步的区别
  2. 异步是基于JS单线程的语言,它不会阻塞代码的运行。而同步会阻塞代码的运行。
  1. 2.手写promis加载一张图片
  2. function loadImage(src){
  3. return new Promise((resolve,reject)=>{
  4. var img = document.createElement("img");
  5. img.src = src;
  6. img.onload = function(){
  7. resolve(img);
  8. }
  9. img.onerror = function(){
  10. reject(new Error(`图片加载失败${src}`))
  11. }
  12. })
  13. }
  14. loadImage(src).then(res=>{
  15. console.log(res.width)
  16. }).catch(err=>{
  17. console.log(err)
  18. })
  1. setTimeout(()=>{
  2. console.log(1)
  3. },1000)
  4. setTimeout(()=>{
  5. console.log(2)
  6. },0)
  7. console.log(3)