function promiseDebounce (func, wait) {
let loading = false
let promise = null
return function () {
if (loading && promise) {
return promise
}
loading = true
setTimeout(() => {
loading = false
}, wait)
const context = this
const args = arguments
promise = func.apply(context, args)
return promise
}
}
const test = promiseDebounce(function () {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('加载完成')
resolve(222)
}, 2000)
})
}, 1000)
test().then(res => {
console.log(res)
})
setTimeout(() => {
test().then(res => {
console.log(res)
})
}, 500)
setTimeout(() => {
test().then(res => {
console.log(res)
})
}, 1500)