zoukankan      html  css  js  c++  java
  • Promise

    Promise的含义

      Promise是异步编程的一种方式,相比于传统的回调函数,更容易理解和查阅,同时可以避免回调地狱的问题

    特点:

      1.状态不被外界影响,只会受到异步操作结果的影响,如在读取网络数据的时候,读取不到就是失败(pending->rejected),成功就是(pending->fulfilled)

      2.状态被改变之后不能再次变化,只能变化一次.

     使用方式:实现将异步任务 同步化

    new Promise((resolve,reject)=>{//new Promise()返回的是一个 Promise对象,then()返回的也是Promise对象
        //主线程执行
       //code
         resolve(value); //value就是then方法中的data参数 ,最后执行该函数
        //code  即使上面已经修改了状态但是也可执行,异步任务的执行放到最后。
    }).then(function(data){//异步执行 前一个Promise的状态会决定后一个Promise的状态,并执行哪个函数。
        
        //状态为fulfilled
      return json.post ;// then()返回的Promise对象,而then的回调函数返回的结果是下一个Promise回调函数的参数。
    },function(e){
    
       //状态为rejected 
    }).catch((e)=>{
      //如果没有catch捕获错误,外部是无法捕获错误的,不会有任何反应。
      //错误会冒泡...前面的错误可能会被catch捕获
      //捕获所有的异常,如果之前存在reject的函数(then中的)就不捕获该函数之前的异常了,如果该异常函数之前都不存在任何解决错误的函数就都捕获。
    })
    .finally(()=>{
      //不管执行成不成功就得执行的一步
    })
    .done(function(){
      //回调链的尾部,保证任何可能出现的错误,防止最后一个Promise出现错误,无法捕获。
      
    })

        除了上面显示的一些方法之外还有一些主要的方法:

        Promise.all([p1,p2,p3])  all的参数数组(有遍历器接口的对象)中存放的都是Promise对象:

           1.只有所有的Promise对象都变成Fulfilled才是Fulfilled

             2.只要有一个Promise是rejected就是rejected

            (类似于数组的every方法)

        Promise.race([p1,p2,p3]) 同上

           1.只要有一个状态改变整个的状态就改变

           2.整个的状态是率先改变的状态。

        Promise.resolve() 将现有的对象转化成Promsie对象

          1.参数是一个Promsie对象,直接转换成该参数对象继续执行

          2.参数是一个包含then方法的对象,将该对象转换成Promise对象之后,立即执行其内部的then方法,然后再继续执行

          3.参数不是一个对象,将该参数作为下次then(resolved回调函数)中的参数。

          4.没有参数,直接返回一个Promise,继续执行的then中的resolved回调函数中没有参数。

        Promise.reject() 将现有的对象转化成Promise对象 ,基本上和Promise.resolve()相同。

        Promise.try() 让同步任务同步执行,异步任务异步执行。

        

    const  f = function(){console.log("1")}
    Promise.try(f);
    console.log("2");
    //1
    //2
  • 相关阅读:
    内存溢出与内存泄漏
    Android性能优化系列之Bitmap图片优化
    android 内存泄漏,以及检测方法
    android view绘制流程 面试
    USACO milking cows
    USACO beads
    POJ3311 TSP问题 xingxing在努力
    HDU5074 dp xingxing在努力
    HDU2821 深搜 xingxing1024
    HDU5592 排队问题 xingxing在努力
  • 原文地址:https://www.cnblogs.com/panjingshuang/p/11912325.html
Copyright © 2011-2022 走看看