js 实现 类似java的sleep和wait

it2024-07-05  45

js 实现 类似java的sleep和wait

sleepwait

sleep

/** * * @param {*} time 必填、sleep时间 * @param {*} func 选填、到时间后,执行func逻辑并且返回func的返回值 */ var mySleep = async function (time, func) { return new Promise(function (resolve, reject) { setTimeout(() => { if (func) resolve(func()) }, time); }) } //使用 let res = await mySleep(1000,()=>{})

wait

/** * * @param {*} intervalTime 必填、 间隔时间 * @param {*} mxWaitTime 必填、最大等待时间,-1无限等待 * @param {*} fun 必填、每次间隔时间,都执行该func,func返回true,则结束等待, * @param {*} timeOutFun 选填、等待超时回调函数 */ var myWait = async function (intervalTime, mxWaitTime, fun, timeOutFun) { let res = func() let time1 = 0 while (res !== true || (mxWaitTime!==-1&&time1 < mxWaitTime)) { res = await mySleep(intervalTime, func()) time1 += intervalTime } if ((mxWaitTime!==-1&&time1 >= mxWaitTime) && timeOutFun) timeOutFun() } //使用 var aaa=0; setTimeout(()=>{aaa=3},5000); let res = await myWait(1000,10000,()=>{return aaa==3},()=>{})
最新回复(0)