最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Promise回顾(一)

    正文概述 掘金(无限循环无限)   2021-01-30   397

    pomise 是什么

    • 异步编程 的一种解决方案,比传统的方案(回调函数和事件)更加的合理和强大
    • 好处 异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数
    • promise可以解决异步的问题,本身不能说promise是异步的

    pomise 使用

    new Promise(() => {});
    new Promise(); // 报错
    

    pomise 参数函数解析

    该函数可以接收另外两个由JavaScript引擎提供的函数,resolve和reject。

    函数作用:
    • resolve——将Promise对象的状态从pending变为resolved,将异步操作的结果,作为参数传递出去
    • reject——将Promise对象的状态从pending变为rejected,将异步操作报出的错误,作为参数传递出去
    let promise = new Promise((resolve, reject) => {
      // do something
      if (true) {
        // 将参数返回,供then方法使用
        resolve("value");
      } else {
        // 将参数返回,供then方法使用
        reject("error");
      }
    });
    

    Promise实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数。

    promise.then(
      value => {
        // resolved时调用,value为resolve函数返回的参数
        console.log(value);
      },
      err => {
        // rejected时调用,err为reject函数返回的参数
        console.log(err);
      }
    );
    
    

    当then方法只有一个函数参数时,此时为resolved状态的回调方法

    promise.then(value => {
        // 只有状态为resolved时才能调用,如果返回的是rejected状态,则报错 Uncaught (in promise) error
        console.log(value);
      });
    

    只有当promise的状态变为resolved或者rejected时,then方法才会被调用

    Promise 新建后就会立即执行,并且调用resolve或reject后不会终结 Promise的参数函数的执行。

    let promise = new Promise(function(resolve) {
      console.log("Promise");
      resolve();
      console.log("!!!")
    });
    
    promise.then(function() {
      console.log("resolved.");
    });
    console.log("Hi!");
    
    // Promise
    // !!!
    // Hi!
    // resolved
    
    

    pomise 特点(三种状态)

    • 对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、resolved(已成功)和 rejected(已失败)
    • 一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从 pending 变为 resolved 和从 pending 变为 rejected
    • promise内部发生错误,不会影响到外部程序的执行。

    参考

    • juejin.cn/post/692159…
    • es6.ruanyifeng.com/#docs/promi…

    起源地下载网 » Promise回顾(一)

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元