前端javascript练习题之promise
前端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()
})
})();

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
前端javascript练习题之闭包案例
前端javascript练习题之闭包案例,编写一个求和函数sum,使输入sum(2)(3)或输入sum(2,3),输出结果相同 可以传入多个参数 function sum(){ var num = arguments[0]; if(arguments.length==1){ return function(sec){ return num+sec; } }else{ var num = 0; for(var i = 0;i<arguments.length;i++){ num = num + arguments[i]; } return num; } } 递归----深拷贝function deepCopy(obj){ if(Array.isArray(obj)){ var newobj=[]; }else{ var newobj={}; } for(var i in obj){ if(typeof obj[i]=="object"){ newobj[i]=deepCopy(obj[i]); }else{ newobj[i]=obj[i]; } } return newobj; ...
-
下一篇
Python的小数据存储,用什么格式更有逼格?
小数据存储 我们在编写代码的时候,经常会涉及到数据存储的情况,如果是爬虫得到的大数据,我们会选择使用数据库,或者excel存储。但如果只是一些小数据,或者说关联性较强且存在存储后复用的数据,我们该如何存储呢? 使用open保存文本 最简单、粗暴+无脑的存储方式就是保存成一个文本文档了。使用open函数,将结果一行行的保存成文本,这里涉及的知识点只有简单的几条: 文件读写模式,r 、w、a、b、+ ,掌握这几种即可。 使用单独的open打开文件时,需要注意结尾时的调用close()函数关闭文档 推荐使用上下文管理器的with open操作 csv文件 之所以将csv与excel分开说,首先需要扫盲下,csv属于特定格式的文本文件(使用逗号分隔),而excel是二进制文件。 csv可以直接使用文本编辑器打开,excel不行… 其实csv文件,完全可以使用open函数进行保存,只要你将每行数据都使用,分隔开即可。另外,python自带csv库,可以很方便的操作与保存该数据 xml文件 xml文件的方式,已经逐渐被淘汰了,为什么这么说?因为它繁琐的树形结构,导致了在传输过程中,占用了更多的内存...
相关文章
文章评论
共有0条评论来说两句吧...