setTimeout、setInterval 是两个常用的异步函数。
但作为异步函数,他们不支持 Promise
或者 async/await
写法。
代码写起来:
setTimeout(() => {
console.log('执行一些操作')
setTimeout(() => {
console.log('执行另一些操作')
// setTimeout ...
}, 3000)
}, 1000)
不好看!
尽管经过简单的封装,可以达到目的,但每次用到都封装一次——重复造轮子。
本篇介绍一个使用起来很方便的轮子:丑丑仔。
使用
安装
npm install ccz
例子
程序“暂停”一秒
const timeoutP = require('ccz/timeout')
async function main(){
console.log('开始')
await timeoutP(1000)
console.log('一秒之后')
await timeoutP(2000)
console.log('又过了两秒')
}
main()
每秒一次,共三次
const intervalP = require('ccz/interval')
async function main(){
console.log('开始')
await intervalP(1000, 3, () => {
console.log('哈哈')
})
console.log('结束')
}
main()
先停一秒,再每秒执行一次,执行两次;再停两秒,每半秒执行一次,执行三次,再等一秒!
const { timeoutP, intervalP } = require('ccz')
async function main(){
console.log('开始')
await timeoutP(1000) // 等一秒
await intervalP(1000, 2, () => {
console.log('每秒一次,共两次')
})
await timeoutP(2000) // 等两秒
await intervalP(500, 3, () => {
console.log('每半秒一次,共三次')
})
await timeoutP(1000) // 等一秒
console.log('结束')
}
main()
一秒执行 24 次
const withoutIntervalP = require('ccz/without-interval')
async function main(){
console.log('开始')
await withoutIntervalP(1000, 24, () => {
console.log('换帧')
})
console.log('结束')
}
main()