您现在的位置是:首页 > 文章详情

前端javascript练习题之promise

日期:2019-11-27点击:566

前端javascript练习题之promise
promise-ajax的封装
function ajax(url){//创建promise对象
var promise = new Promise(function(resolve,reject){
//创建ajax对象

     if(window.XMLHttpRequest){
        var xhr = new XMLHttpRequest();
     }else{
        var xhr = new ActiveXObject("Microsoft.XMLHTTP");
     }
     
     xhr.open("get",url,true);
     xhr.send();
     
     xhr.onreadystatechange = function(){
        if(xhr.readyState == 4){
           if(xhr.status == 200){
              var data = xhr.responseText;
              resolve(data);
           }else{
              reject();
           }
        }
     }

})
return promise; //返回promise对象}
红绿灯
html结构代码

<li id="green"></li>
<li id="yellow"></li>
<li id="red"></li></ul>

css样式代码:
ul {

position: absolute;
width: 200px;
height: 200px;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
/*画3个圆代表红绿灯*/

ul>li {
width: 40px;
height: 40px;
border-radius: 50%;
opacity: 0.2;
display: inline-block;
}
/*执行时改变透明度*/

ul.red>#red,
ul.green>#green,
ul.yellow>#yellow {
opacity: 1.0;
}
/*红绿灯的三个颜色*/

#red {
background: red;
}

#yellow {
background: yellow;
}

#green {
background: green;}

js实现代码:
function timeout(timer) {

 return function() {
      return new Promise(function(resolve, reject) {
            setTimeout(resolve, timer)
                 })
             }
         }
     var green = timeout(1000);
     var yellow = timeout(1000);
     var red = timeout(1000);
     var traffic = document.getElementById("traffic");
    
     (function restart() {
         'use strict' //严格模式
         traffic.className = 'green';
         green().then(function() {
                 traffic.className = 'yellow';
                 return yellow();
             })
             .then(function() {
                 traffic.className = 'red';
                 return red();
             }).then(function() {
                 restart()
             })
     })();
原文链接:https://yq.aliyun.com/articles/729659
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章