Promise再次学习与回顾

最近在做项目的时候,使用到了几次promise,但是之前学习的东西,由于不经常使用,所以导致大部分内容都已经忘记了。今天,再次学习Promise相关的内容,也感觉自己收获蛮多。下面,就来做一个简单的总结。

Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。

所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。

promise的三种状态

  1. pending(进行中)

  2. fulfilled(已成功)

  3. rejected(已失败)

    // 下面来看看代码 代码是写在vue里面的方法 所以没有用function 放在mouted this调用
    runAsync1() {
    let p = new Promise((resolve, reject) => { setTimeout(() => { console.log(“链式调用1111”); resolve(“我是数据1111”); }, 4000); }); return p; }, runAsync2() { let p = new Promise((resolve, reject) => { setTimeout(() => { console.log(“链式调用2222”); resolve(“我是数据2222”); }, 2000); }); return p; }, runAsync3() { let p = new Promise((resolve, reject) => { setTimeout(() => { console.log(“链式调用3333”); resolve(“我是数据3333”); }, 1000); }); },

      this.runAsync1()        .then((data) => {          console.log(data);          return this.runAsync2();        })        .then((data) => {          console.log(data);          return this.runAsync3();        })        .then((data) => {          console.log(data, 888);        });then 链式调用 解决异步的一种方案
    
    // reject 方法使用
    复制代码

    runReject() { this.runAsync4() .then((data) => { console.log(“我是数字” + data); }) .catch((err) => { console.log(“我报错了” + err); }); }, runAsync4() { console.log(this.myNum); let p = new Promise((resolve, reject) => { setTimeout(() => { if (this.myNum > 5) { resolve(this.myNum); } else { reject(this.myNum); } }, 1000); }); return p; },

我们常用的axios 链式调用then 方法 实则就是 promise封装的http库 所以才能用then方法!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享