callback-to-promise
v1.1.1
Published
## Installation
Downloads
10
Readme
callback-to-promise
Installation
npm install --save callback-to-promise
Usage
Import the module:
import callbackToPromise from 'callback-to-promise'
Example 1:
let setTimeoutPromise = callbackToPromise(setTimeout)
await setTimeoutPromise(() => {
// todo
}, 1000)
Example 2:
let testFn = (fn1, fn2, fn3) => {
setTimeout(() => fn1(), 300)
setTimeout(() => fn2(), 100)
setTimeout(() => fn3(), 200)
}
let testFnPromise = callbackToPromise(testFn, { wait: 'all' output: 'order' })
await testFnPromise(
() => {
console.log('fn1')
},
() => {
console.log('fn2')
},
() => {
console.log('fn3')
},
)
// fn2
// fn3
// fn1
Example 3:
let testFn = (fn1, fn2, fn3) => {
setTimeout(() => fn1(), 100)
setTimeout(() => fn2(), 200)
setTimeout(() => fn3(), 300)
}
let testFnPromise = callbackToPromise(testFn, { wait: [1, 2], output: 'sort' })
let returnValue = await testFnPromise(
() => {
return 'fn1end'
},
() => {
return 'fn2end'
},
() => {
return 'fn3end'
},
)
console.log(returnValue[0].result) //fn2end
console.log(returnValue[1].result) //fn3end
Example 4:
let obj = {
testFn(fn1) {
setTimeout(() => fn1(), this.second * 1000)
},
second: 3,
}
let testFnPromise = callbackToPromise(obj, 'testFn', { wait: 'all', output: 'sort' })
let returnValue = await testFnPromise(() => {
return 'fn1end'
})
console.log(returnValue[0].result) // fn1end
Example 5:
// 创建 DOM 元素
const button = document.createElement('button')
button.textContent = 'Click me'
document.body.appendChild(button)
// 触发点击事件
setTimeout(() => button.click(), 200)
// 绑定点击事件
let count = 0
let testFnPromise = callbackToPromise(button, 'addEventListener')
let returnValue = await testFnPromise('click', () => {
count++
})
// 移除点击事件
button.removeEventListener('click', returnValue[0].callback)
button.click()
console.log('Button clicked count:' + count) // Button clicked! count:1
Option
| 配置 | 参数 | 默认 | 描述 |
| :----- | :-------------------------: | -------: | --------------------------------------------------------------------------------------------------- |
| wait | "all"
"race"
number[]
| "all"
| all:等待所有 callback 执行race:只等待最先执行的 callbacknumber[]:等待指定 callback 执行 |
| output | "sort"
"order"
| "sort"
| sort:返回值按照入参顺序返回order:返回值按照执行顺序返回 |
| second | number | 0
| 超时时间,0 为永不超时时 |
————————————————