ES6--Promise对象

Promise对象:代表了未来某个将要发生的操作,通常是异步操作
promise对象可以将异步操作以同步的流程表达出来,避免了层层嵌套的
回调函数(回调地狱),ES6的Promise是一个构造函数,用来生成promise实例
基本步骤:1创建promise对象 2.调用promise的then()
3.promise的三个状态:pending:初始化,fullfilled:成功,rejected:失败
4.应用:使用promise实现超时处理,使用promise封装处理ajax请求
使用promise实现封装处理ajax请求
例:

let promise = new Promise((resolve,reject)=>{
            console.log("111");
            //执行异步操作通常是发送ajax请求,开启定时器
            setTimeout(()=>{
                console.log("333");
                //根据异步任务的返回结果来修改promise的状态
                //异步任务执行成功
                
                resolve("哈哈");//修改promise的状态为fullfilled;成功状态
                // reject();//修改为失败状态
            },2000);
            console.log("222");
        }).catch((e)=>{});
        promise.then((data)=>{//成功的回调,也可以写上参数resolve
                console.log(data,'成功了');
            },()=>{//失败的回调
                console.log('失败了');
            });
Promise例子---用ajax获取新闻内容
//promise对象案例练习
            //获取新闻内容
            function getNews(){
                let promise = new Promise((resolve,reject)=>{
                    //状态:初始化
                    //执行异步任务
                    //创建xmlHttp实例对象
                    let xmlHttp = new XMLHttpRequest();
                    //绑定监听 readyState
                    xmlHttp.onreadystatechange = function(){
                        if(xmlHttp.readyState==4){
                            if(xmlHttp.status==200){//请求成功
                                console.log(xmlHttp.responseText);
                                resolve(xmlHttp.responseText);//修改promise的状态为成功状态
                            }
                        }else{//请求失败
                            reject("暂时没有数据");
                        }
                    };
                     xmlHttp.open('GET',url);
                     xmlHttp.send();
                });
               return promise;
            }
            getNews("address url")
            .then((data)=>{
                console.log(data);
                //发送请求获取内容
                let theCommemnt = JSON.parse(data).commemntUrl;//commentUrl是data数据里面的一个地址
                let url =  "address url"+theCommemnt;
                return getNews(url);
            },(err)=>{
                console.log(err);
            })
            .then((data)=>{
                 console.log(data);//上面的then返回的数据
            },()=>{

            });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值