promise和async/await都是处理异步请求

/**
* 注释:
*js中的同步、异步问题通常是指ajax回调:
*   1)同步:同比调用,程序发出ajax调用后就暂停,到服务器有回应才继续
*   2)异步:异步调用,程序发出ajax调用后立即执行后面代码,服务器返回信息后会自动触发回调函数进行处理
*   3)优缺点:异步程序不会程序卡顿现象,同步用于需要立即获得结果并实时处理的情况
*/

一、promise的基本用法:

//Promise对象,简单来说就是一个容器,里面保存着异步操作的最终完成 (或失败)及其结果值

 1)基本语法:  

let p = new Promise((resolve,reject)=>{
          //....
        resolve('success')

   });

    p.then(result=>{

    console.log(result) ; //success

    });

2)三个状态 :  pending (执行中)  、success(成功) 、 rejected (失败)

3)链式调用:

  

let p = new Promise((resolve,reject)=>{
    
      reject('error');
     });
 //Promise.prototype.catch用于指定Promise状态变为rejected时的回调函数,可以认为是.then的简写形势,返回值跟.then一样   
     p.cath(result=>{
       
      console.log(result);
     })

 

二、async、await

async用于声明一个函数是异步的,而await可以认为是async wait的简写,等待一个异步方法执行完成。

/**
* Async/Await让 try/catch 可以同时处理同步和异步错误 * async,await : 将异步强行转换为同步处理,async/await是寄生于Promise的语法糖
*/

 

三、错误捕获:

// 如果是reject状态,可以用try-catch捕捉  ,  await关键字只能用在aync定义的函数内

let p =new Promise((resolve,reject)=>{
          setTimeout(()=>{
                       reject('error')
              },1000);
        })

async function demo(params){

         try{
              let result = await p;     
            } 

  catch(e) {
              consloe.log(e)
            }
 }

demo();

 

 posted on 2020-12-01 12:16  楼顶铁板烧  阅读(69)  评论(0编辑  收藏  举报