zoukankan      html  css  js  c++  java
  • promise

    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();
  • 相关阅读:
    图论基础
    降维和聚类系列(二):拉普拉斯特征映射Laplacian Eigenmaps,谱聚类,实例代码
    降维和聚类系列(一):方法综述和比较(持续更新中)
    markdown设置图片尺寸
    指示向量indicator vector
    Sherlock and his girlfriend CodeForces
    The Meeting Place Cannot Be Changed CodeForces
    The Meeting Place Cannot Be Changed CodeForces
    数组分块入门 3
    数组分块入门 3
  • 原文地址:https://www.cnblogs.com/a1-top/p/14067324.html
Copyright © 2011-2022 走看看