javascript中的promise对象2

接着前面的下面继续介绍promise的静态方法:
一、 resolve()方法:将现有的对象转换为promise对象。它有以下4种情况:

  1. 对象本身为promise实例对象,它会原封不动的将其返回,不做处理。
  2. 具有then方法的对象,它会将其转换为promise对象,然后立即执行then方法
    let obj = {
        a: "then",
        then() {
          console.log(this.a); //then
        },
      };
      let promise = Promise.resolve(obj);
      console.log(promise);
  1. 不具有then方法或者不是对象,它直接返回一个新的对象状态为resolve
      let x = 5;
      let promise = Promise.resolve(x);
      promise.then((res) => {
        console.log(res);
      });
      console.log(promise);

4.不带任何参数,直接返回一个promise对象并且状态为resolve.,如果希望得到一个新的promise对象拿那么就可以调用它。

   let promise = Promise.resolve();
      console.log(promise); //返回一个新的promise
      //  pending; //fulfilled //rejected

二 、promise.reject方法:它也会返回一个新的promise实例,它的状态为失败。

      let promise = Promise.reject(new Error('出错'));
      console.log(promise);
      let x=new Promise((resolve,reject)=>{
         reject(new Error('出错'))
      })
      //  pending; //fulfilled //rejected

三、 promise.race方法也是将多个Promise实例包装成一个新的promise,它是如果有一个promise改变就将最先变的结果值传递给它。

四、promise.allSettled:它是等所有的异步的请求都完成。不管成功还是失败、才会得到结果。

    function time1(){
         return new Promise((resolve,reject)=>{
            setTimeout(()=>{resolve(3)},10000)
         })
      }
      function time2(){
         return new Promise((resolve,reject)=>{
            setTimeout(()=>{resolve(4)},4000)
         })
      }
      function time3(){
         return new Promise((resolve,reject)=>{
            setTimeout(()=>{resolve(5)},6000)
         })
      }
     let race=Promise.allSettled([time1,time2,time3])
     console.log(race);

五、promise.any它和all方法相反,有一个完成就直接返回完成、全部失败就返回失败

六、 Promise.all:将多个Prmise实例包装成一个新的promise,
1.如果每个实例都是成功状态就返回成功状态的值为一个数组,如果有一个失败就返回失败状态的值。

    let promise1 = Promise.reject(new Error('出错'));
      let promise2=new Promise((resolve,reject)=>{
         reject(new Error('出错'))
      })
      let promise3=new Promise((resolve,reject)=>{
           resolve(3)
      })
    
     let promise=Promise.all([promise1,promise2,promise3])
      console.log(promise); //出错
     let promise1=new Promise((resolve,reject)=>{
           resolve(2)
        })
        let promise2=new Promise((resolve,reject)=>{
           resolve(2)
        })
        let promise3=new Promise((resolve,reject)=>{
             resolve(3)
        })
       let promise=Promise.all([promise1,promise2,promise3])
       promise.then(res=>{
         console.log(res); //[2,2,3]
       })
   const p1 = new Promise((resolve, reject) => {
        resolve("hello");
      })
        .then((result) => result)
        .catch((e) => e);

      const p2 = new Promise((resolve, reject) => {
        throw new Error("报错了");
      })
        .then((result) => console.log(result))
        .catch((e) => e);

      Promise.all([p1, p2])
        .then((result) => console.log(result))
        .catch((e) => console.log(e));```


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值