需求
1秒后打印数字1到30,完成打印后再过1秒打印数字31至60
代码
<script>
function timer(callback,time) //这里是封装的函数
{
return new Promise((resovle,reject)=>{
let timerId = setInterval(()=>{
// 这里把生成的定时器id传给回调函数,参照前面博客的写法,这种写法需要熟练
callback(timerId,resovle);
},time);
});
}
let p = timer((timerId,resolve)=>{
console.log('第一个回调');
for(let i = 1; i <= 30; i++)
{
console.log(i);
if(i === 30)
{
clearInterval(timerId);
resolve(); // 改变第一个promise对象的状态,这样下面就可以收到,进行then处理
}
}
},1000);
p.then(
()=>{
timer((timerId,resolve)=>{
console.log('第二个回调');
for(let i = 31; i <= 60; i++)
{
console.log(i);
if(i === 60)
{
clearInterval(timerId);
}
}
},1000);
}
);
</script>