首页 > 其他分享 >Promies的概念 链式调用

Promies的概念 链式调用

时间:2022-12-02 14:11:08浏览次数:67  
标签:调用 console log res resolve Promise 链式 Promies

axios基于promis的API进行封装的 Promise主要解决了异步操作 回调函数的多层嵌套形成回调地狱的问题 、

Promise-概念及基本使用

Promise可以用来解决上一节回调函数嵌套的问题,mdn查看如何使用它

概念

  1. Promise 是一个对象,它代表了一个异步操作的最终完成或者失败。

  2. axios就是基于Promise封装的

  3. 基于Promise之后的约定:

    1. 通过then获取成功结果

    2. 通过catch获取失败结果

    3. 可以用链式的方式处理多个彼此依赖的异步操作

      1. 一路点下去

      2. 类似数组方法arr.map().filter().map().filter()

      3. 上一个方法的返回值,可以继续点出后续的方法

返回的是Promise Promise原型Prototype里面有很多方法 .then .catch,rejevtd Promise是一个构造函数 p是实例化对象 return Promise实例化对象.then .then 会形成链式调用
<body>
    <h2>测试axios返回的是否是Promise</h2>
    <script src="./lib/axios.js"></script>
    <script>
      // axios基于promis的API进行封装的
      // const p = axios({}).then(() => {});
      // console.log(p); //返回的是Promise Promise原型Prototype里面有很多方法 .then .catch,rejevtd

      // 两种状态只能执行 一次 谁写上面谁先执行
      // Promise是一个构造函数 p是实例化对象   return Promise实例化对象.then .then 会形成链式调用

      const p = new Promise((resolve, reject) => {
        resolve(); //状态成功时执行.then回调函数
        reject(); //状态失败时执行.catch回调函数
      });
      p.then(() => {
        console.log("成功了");
      }).catch(() => {
        console.log("我失败了");
      });

      // 过一秒 参数传过去 ‘成功’
      const p1 = new Promise((resolve, reject) => {
        // console.log("resolve是一个方法", resolve);//ƒ () { [native code] }
        setTimeout(() => {
          resolve("我成功了");
        }, 1000);
      }).then((res) => {
        console.log("res是resolve成功时传过来的参数", res);
      });
    </script>
  </body>
Promise的链式调用
<body>
    <h2>链式调用</h2>
    <script src="./lib/axios.js"></script>
    <script>
      //  resolve   reject (形参) 名字可以改,但是建议别改
      // 实例化对象可以调原型上的方法 可以进行链式调用
      // Promise是一个构造函数 p是实例化对象 return Promise实例化对象.then .then 形成链式调用
      const p = new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve("我是1");
        }, 1000);
      })
        .then((res) => {
          console.log("1", res);
          return new Promise((resolve, reject) => {
            setTimeout(() => {
              resolve("我是2");
            }, 2000);
          });
        })
        .then((res) => {
          console.log("2", res);
          return new Promise((resolve, reject) => {
            setTimeout(() => {
              resolve("我是3");
            }, 3000);
          });
        })
        .then((res) => {
          console.log("3", res);
        });
    </script>
  </body>

 

标签:调用,console,log,res,resolve,Promise,链式,Promies
From: https://www.cnblogs.com/JAG2671169285/p/16944275.html

相关文章