美文网首页
JavaScript异步编程:(四)Promise类方法

JavaScript异步编程:(四)Promise类方法

作者: fanren | 来源:发表于2022-05-17 09:07 被阅读0次

    前言

    创建一个新的Promise对象,除了使用new之外,还提供了四个类方法(静态方法)供我们使用;分别是resolve、reject、all、race

    一、resolve

    创建了一个立即resolve的对象

    let promise = Promise.resolve(5);
    

    等价于

    let promise = new Promise((resolve) => {
      resolve(5)
    })
    

    二、reject

    创建了一个立即reject的对象

    let promise = Promise.reject(5);
    

    等价于

    let promise = new Promise((resolve, reject) => {
      reject(5);
    });
    

    三、all

    把多个Promise对象合并为一个Promise对象;

    taskOne() {
      return new Promise((resolve) => {
        setInterval(() => {
          resolve(4);
        }, 1000);
      });
    },
    
    taskTwo() {
      return new Promise((resolve) => {
        setInterval(() => {
          resolve(2);
        }, 2000);
      });
    },
    let promise = Promise.all([
      this.taskOne(),
      this.taskTwo()
    ]);
    promise
      .then((value) => {
        console.log(value, "resolve");
      })
      .catch((error) => {
        console.log(error, "error");
      });
    
    • 被合并的几个Promise对象是并行执行的;
    • 在几个Promise对象执行完毕后,才会走到then内部,并且返回所有对象结果值的数组
    • 一旦有其中某一个对象返回了异常,则直接返回异常,执行catch;

    四、race

    把多个Promise对象合并为一个Promise对象;

    let promise = Promise.race([
      this.taskOne(),
      this.taskTwo()
    ]);
    
    • 被合并的几个Promise对象是并行执行的。
    • 只要有其中一个Promise对象执行完毕,就会走到then内部,并且返回改对象的结果值
    • 一旦有其中一个对象返回了异常,则直接执行catch;

    相关文章

      网友评论

          本文标题:JavaScript异步编程:(四)Promise类方法

          本文链接:https://www.haomeiwen.com/subject/tejwurtx.html