Promise()函数

1.promise函数返回值:

<script>
        function demo(){

            return 
        }


        function ping(number){
            
            if(number > 120){
                return number
            }

            if(number < 120){
                return '太短了'
            }


        }

        let num = ping(120);
        console.log(num); // undefined

        let num = ping(121);
        console.log(num); // 121

        let num = ping(119);
        console.log(num); // 太短了
</script>
说明:如果return 后面不加返回值,函数的值 就是未定义  
这个时候return 的作用仅仅是,不让后面的代码继续执行,继续执行的条件,是不在同一个作用域

2.promise倒计时:

 Promise():

是异步函数,可以理解为等待函数,可以等待函数里面的代码,执行完,

再返回值;通过promise的.then();回调出成功的返回值.catch();失败的返回值,

Promise是一个构造函数;所以说,创建Promise需要,在前面加上new

成功回调: 

<script>
// 定义Promise  
        let pro = new Promise((resolved,reject) => {
            /* 
                两个形参:
                    resolved,成功的返回值
                    reject,失败的返回值
            */

            setTimeout(()=>{
                resolved(6)
                // resolved(返回的参数)  代表的是 逻辑执行成功  相对应.then()回调
            },3000)
        })

        pro.then((result) => {
            /* 
                result  是在定义的promise里面,resolved的返回参数
            */
           console.log(result);
        })
</script>

失败回调(基本上不使用):

<script>
// 定义Promise  
        let pro = new Promise((resolved,reject) => {
            /* 
                两个形参:
                    resolved,成功的返回值
                    reject,失败的返回值
            */
            
            var index = 0;
            setTimeout(()=>{
                if(index == 0){
                    resolved(6)
                // resolved(返回的参数)  代表的是 逻辑执行成功  相对应.then()回调
                }else{

                    reject(8)
                // reject(返回的参数)  代表的是 逻辑执行失败  相对应.then()回调
                }
            },3000)
        })

        pro.then((result) => {
            /* 
                result  是在定义的promise里面,resolved的返回参数
            */
           console.log(result);
        }).catch((error) => {
            /* 
                error  是在定义的promise里面,reject的返回参数
            */
            console.log(result);
        })
</script>

3.promise封装Ajax:

<script>
        //写一个函数
        function proAjax(url) {
            //定义一个 promise  定义之后会立即执行
            let pro = new Promise((resolved, reject) => {
                //ajax四要素
                //创建
                let ajax = new XMLHttpRequest();
                //打开
                // ajax.open('get', 'index.json');
                ajax.open('get', url);
                //发送
                ajax.send();
                //监听
                ajax.onreadystatechange = function (res) {
                    //判断最后一次握手情况
                    if (res.currentTarget.readyState == 4 && res.currentTarget.status == 200) {
                        //转换成json格式
                        let data = JSON.parse(res.currentTarget.responseText);
                        resolved(data)
                    }
                }
            })
            //使用pro作为proAjax的函数返回值
            return pro;
        }
        // proAjax('index.json') == pro

        //把请求地址传到proAjax(url)函数内
        proAjax('index.json');

        proAjax('index.json').then((result) => {
            console.log(result);
        })
    </script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值