Promise 红绿灯效果

前言:关于Promise的一些基本属性,点击进入【 ES6之Promise】

foo返回一个Promise实例,foos返回并向foo传参,传color和time参数,过了指定的time时间以后,Promise状态就变为resolve,就会触发then方法绑定的回调函数;

let light=document.getElementById("light");
let foo=function(color,time){
	return new Promise(function(resolve,reject){
		setTimeout(function(){
			resolve();
			light.style.background=color;
		},time);
	})
};
let foos=function(){
	light.style.background="yellow";
	return foo("red",3000).then(function(){
		foo("green",4000).then(function(){
			foo("yellow",5000).then(function(){
				foos();
			})
		})
	})
};
foos();

用ES6的箭头函数,可以让代码更简洁;

let light=document.getElementById("light");
let foo=(color,time)=>{
    return new Promise((resolve,reject)=>{
        setTimeout(()=>{
            resolve();
            light.style.background=color;
        },time);
     })
};
let foos=()=>{
    light.style.background="yellow";
    return foo("red",3000).then(()=>
          foo("green",4000).then(()=>
              foo("yellow",5000).then(()=>{
                  foos();
              })
          )
     )
};
foos();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值