js--promise1

105 阅读1分钟
        const promise1 = Promise.resolve("First");
        console.log(promise1)
        const promise2 = Promise.resolve("Second");
        console.log(promise2)
        const promise3 = Promise.reject("Third");
        console.log(promise3)
        const promise4 = Promise.resolve("Fourth");
        console.log(promise4)

        const runPromises = async () => {
            const res1 = await Promise.all([promise1, promise2]);
            console.log(Object.prototype.toString.call(res1))//Array
            console.log('res1',res1)
            const res2 = await Promise.all([promise3, promise4]);
            //执行reject方法,结束了,后边不执行了

            console.log('res2',res2)
            console.log('我可以执行吗')
            return [res1, res2];
        };

    
        const promise = runPromises()
        console.log('promise:',promise)
        promise.then((res) => console.log(res))
            .catch((err) => console.log(err))
            
            
结果:Promise {<resolved>: "First"}
     Promise {<resolved>: "Second"}
     Promise {<rejected>: "Third"}
     Promise {<resolved>: "Fourth"}
     promise: Promise {<pending>}
     [object Array]
     res1 (2) ["First", "Second"]
     Third
     
解析:1、resolve、reject方法返回一个带状态的promise实例
     2、all方法:有rejected的promise,直接执行then传入的reject方法或者catch传入的方法(参数是当前一 
     个值)没有rejected就执行then传入的resolve方法(参数是所有promise的值数组)
     3asyncawaitPromise.then的简写。async函数return的值是最后一次await之后的返回值,也就是最
     后一次then方法中resolve或reject传出的值。