“多线程”Promise 工具类
vue
that = this
或者用 全局变量
map = {count:0}
//阻塞并获取额度 await WTool.Thread.sleepLimit(that, '变量名称', 500)
await WTool.Thread.sleepLimit(map, 'count', 500)
Thread:{/*** 阻塞x毫秒* 使用方法* await sleep(5000) 等待5秒* @param time* @returns {Promise<void>}*/async sleep(time){await new Promise(resolve => setTimeout(resolve, time))},/*** 阻塞获取额度* 使用方法* await sleepLimit(that, 字段, 1000)* @param _vm that* @param field 字段* @param time 多久判断一次* @returns {Promise<boolean>}*/async sleepLimit(_vm, field, time){if(time){time = 500}let flag = truewhile(flag){if(_vm[field] > 0){// if(_vm[field].length > 0){//睡眠等待await WTool.Thread.sleep(time);//有额度了flag = false_vm[field]--// _vm[field].shift()console.log('有额度了,获取名额之后:',_vm[field])return true}else{//睡眠等待await WTool.Thread.sleep(time);}}},/*** 等待额度释放完毕* 使用方法* await join(that, 字段, 1000)* @param _vm that* @param field 字段* @param time 多久判断一次* @returns {Promise<boolean>}*/async join(_vm, field, realCount, time){if(time){time = 2000}let flag = truewhile(flag){if(_vm[field] >= realCount){// if(_vm[field].length >= realCount){console.log('所有额度释放完毕:',_vm[field])//有额度了flag = falsereturn true}else{//睡眠等待await WTool.Thread.sleep(time);}}}},