es6:promise的all方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    // all : 是将多个Promise的实例包装成一个promise的实例;
    // all方法是Promise这个类的私有方法
    // all方法传递一个数组,数组中存放着Promise的实例;all方法返回一个promise的实例;
    //let l1 = getJSON("a.json")
    let p1 = Promise.all([l1,l2,l3]).then(function () {
        // p1的成功或者失败的状态由数组中每一个promise的实例决定;当所有的实例的状态都是成功态,那么该p1的状态才是成功态,只要有一个失败,那么这个就会执行失败态;
    },function () {

    })


    // race :
    // 只要其中一个promise的实例发生改变;那么p2的状态就会随着发生变化;
    const getJSON = function(url) {
        const promise = new Promise(function(resolve, reject){
            const handler = function() {
                // 如果readyState是4的话,会继续向下执行;
                if (this.readyState !== 4) {
                    return;
                }
                // 当前请求状态码是200;则请求成功
                if (this.status === 200) {
                    resolve(this.response);
                } else {
                    // status.Text :代表当前的错误信息;
                    // new Error :错误的一个实例;
                    reject(new Error(this.statusText));
                }
            };
            const client = new XMLHttpRequest();
            client.open("GET", url);
            client.onreadystatechange = handler;
            // 制定相应类型
            client.responseType = "json";
            // 设置请求头
            client.setRequestHeader("Accept", "application/json");
            client.send();

        });
        return promise;
    };
    let p1 = getJSON("a.json")
    let p2 = getJSON("b.json")
    let p3 = getJSON("c.json")
    let p2 = Promise.race([p1,p2,p3]).then(function(data){

    });
    
    // Promise.resolve
    Promise.resolve("foo").then(function () {
        
    })
    new Promise(function (resolve,reject) {
        resolve("foo");
    })

    
    let img = document.createElement("img");// new Image;
    img.src="";
    img.onload = function () {
        
    }
</script>
</body>
</html>
复制代码

转载于:https://juejin.im/post/5c88bc84e51d456d0b681ba9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值