• Es6 Promise 及 截图软件Snipaste.exe


    十年河东,十年河西,莫欺少年穷

    学无止境,精益求精

    Promise 阮一峰文档:https://es6.ruanyifeng.com/#docs/promise

    Snipaste 的使用可参考:https://www.cnblogs.com/cy0628/p/15023420.html 

    截图软件下载地址:https://www.snipaste.com/

    在微信小程序中引入Echats,请参考官方文档:https://echarts.apache.org/handbook/zh/how-to/cross-platform/wechat-app/#%E5%9C%A8%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%B8%AD%E4%BD%BF%E7%94%A8-echarts

    Promise 的用法,关键点描述

    1、Promise.Race([]),Race字面意思为赛跑,他接受一个Promise对象数组,数组中的Promise对象谁最先执行完,则返回最先执行的Promise对象的结果,不会等待其他对象

      onLoad: function (options) {
          let p1=new Promise((resolve,reject)=>{
             setTimeout(() => {
              resolve("OK");
             }, 1000);
          }); 
          let p2=new Promise((resolve,reject)=>{
            reject("OK");
          });  
          let p3=new Promise((resolve,reject)=>{
            resolve("OK");
          });
    
          const result=Promise.race([p1,p2,p3]);
          console.log(result);
      },

    由于p1为一个异步方法,耗时一秒,因此,race方法返回的为p2的执行结果,也就是异常的结果。

     2、Promise.all([]) ,all字面意思为赛跑,他接受一个Promise对象数组,数组中的Promise对象只要有一个失败,则返回失败,如果有多个失败,则返回第一个失败的结果,所有执行成功,则返回所有成功结果。

      onLoad: function (options) {
          let p1=new Promise((resolve,reject)=>{
             setTimeout(() => {
              resolve("OK");
             }, 1000);
          }); 
          let p2=new Promise((resolve,reject)=>{
            resolve("OK");
          });  
          let p3=new Promise((resolve,reject)=>{
            resolve("OK");
          });
    
          const result=Promise.all([p1,p2,p3]);
          console.log(result);
      },

    全成功执行,返回所有结果,数组形式:

     一旦有一个或多个失败,则返回第一个失败的结果

     3、Promise 的then 方法,then 方法接收的为一个Resolve 返回的Promise 对象,如果不是一个Promise 对象,则得到的结果为 未定义

      onLoad: function (options) {
          let p1=new Promise((resolve,reject)=>{
             setTimeout(() => {
              resolve("OK");
             }, 1000);
          }); 
         var p2 = p1.then(value=>{
            console.log(value);
          });
    
          var p3=p2.then(value=>{
            console.log(value);
          })
      },

    执行结果,注意p3的结果为未定义

     4、使用Catch 接收错误信息,当Promise 返回 Reject 时,我们可以使用Catch 接收错误信息。当Promise 返回 Resolve 时,我们使用Then 接收结果值

      onLoad: function (options) {
        let p1 = new Promise((resolve, reject) => {
          reject("error")
         
        }).catch(value => {
          console.log(value);
        } )
      },

     5.Promise 的 Resolve() 方法,如果传入的参数为 非Promise 对象,则直接返回成功的Promise 对象

      onLoad: function (options) {
        let P=Promise.resolve(A=>{
          console.log("Promise参数为非Promise对象,直接返回成功的Promise对象")
        })
        console.log(P)
      },

     如果传入参数的是Promise 对象,则参数Promise 对象返回什么结果,整体返回什么结果

      onLoad: function (options) {
          let P=Promise.resolve(new Promise((resolve,reject)=>{
            reject("error")
          }));
          console.log(P)
      },

     6、异常穿透,当执行链式Then回调时,只需要在最后执行异常回调即可。失败后的代码不会执行

      onLoad: function (options) {
          let P=Promise.resolve(new Promise((resolve,reject)=>{
            resolve("OK")
          })).then(A=>{
            console.log(1);
          }).then(A=>{
            console.log(2);
          }).then(A=>{
            throw "失败拉";
          }).then(A=>{
            console.log(3);
          }).catch(reason=>{
            console.log(reason)
          })
          ;
          
      },

     输出中没有 3

    7、async 修饰的是一个Promise 对象,因此,用async修饰的函数返回值是一个Promise对象

     await 用于等待async 异常执行结果。

    @天才卧龙的博客

  • 相关阅读:
    Java多线程(3) Volatile的实现原理
    Java 多线程(2)-Executor
    Java 多线程(1)-Thread和Runnable
    nginx+php部署
    MySQL的慢查询分析
    MySQL 错误
    log4j.properties配置详解
    Windows下Nginx的安装与配置(转)
    Java 字符的验证
    Spring MVC3返回JSON数据中文乱码问题解决(转)
  • 原文地址:https://www.cnblogs.com/chenwolong/p/15575883.html
Copyright © 2020-2023  润新知