Promise和异步同步

本文探讨了JavaScript中的同步和异步概念,强调异步操作如load事件、setTimeout及requestAnimationFrame。同步任务按顺序执行,而异步任务分为宏任务(setTimeout等)和微任务(Promise)。async/await用于简化异步处理,async函数返回Promise,await仅在async函数内有效且用于等待Promise。此外,还提到了Promise的基本用法、Promise.all以及解决异步并发问题的方法。
摘要由CSDN通过智能技术生成
  1. 同步和异步

    • 同步:停止等待运行结束,继续后续的运行
    • 异步:需要等待一个内容完成后继续执行后面的内容,但是不能将后面的内容写在等待函数外,否则就会同时执行两个
    • 图片要进行预加载,否则不会出现图片的宽高。浏览器具有缓存功能
  2. 异步操作

    • 操作性事件 需要时间

    • load事件 异步 需要加载

    • setTimeout 异步

    • setInterval 异步

    • requestAnimationFrame 异步

    • 注意:async 放在下一帧执行

      ​ defer 所有内容全部加载完成,HTML标签已经完成渲染,给最后执行的代码加

  3. 宏任务和微任务

    • 异步和同步都是在完成任务列的内容
    • 同步任务逐条进行
    • 固定时间异步:setTimeout setInterval requestAnimationFrame(帧时间固定) Promise
    • 非固定时间异步:加载文件和加载图片,通信
    • 宏任务和微任务
      • setTimeOut setInterval 宏任务
      • Promise 微任务
      • 宏任务指将当前的任务挪至下一个新的任务列的最顶端执行
      • 微任务指将当前任务的内容挪至当前任务列的最底端执行
      • 注意:事件抛发都是同步及时触发
  4. async和await

    • async函数执行后返回一个promise对象
    • await只能写在async函数中
    • await只能处理promise对象的异步等待
    • async函数使用return返回的内容可以通过then来获取
  5. promise

    • 基本使用方法

    • //实例化promise对象p
      var p=new Promise(function(resolve,reject){
             
          var img=new Image();
          img.src="./img/17.jpg";
          img.onload=function(){
             
              resolve(img);//加载成功执行该函数
          }
          img.onerror=function(){
             
              reject(img.src+"地址错误");//加载失败执行该函数
          }
      });
      
      //第一种表示方法
      p.then(function(a){
             
          console.log(a);//执行resolve这个函数
      },function(b){
             
          console.log(b);//执行reject这个函数
      })
      
      //第二种表示方法
      p.then(function(a){
             
          console.log(a);//执行resolve这个函数
      }).catch(function(b){
             
          console.log(b);//执行reject这个函数
      })
      
    • Promise.all方法

    • //getImage方法
      function getImage(src) {
             
          return new Promise(function (resolve, reject) {
             
              var img = new Image(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值