Promise红绿灯

一个promise红绿灯的例子,有助于自己简单了解promise的运行机制,虽然说在前面又简单介绍promise,但是感觉没有一个直观的例子来的强烈!

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;
}

html

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

javascript

function timeout(timer) {
     return function() {
         return new Promise(function(resolve, reject) {
             setTimeout(resolve, timer)
         })
     }
 }
 var green = timeout(3000);
 var yellow = timeout(4000);
 var red = timeout(5000);
 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()
         })
 })();

效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值