demo
let timeout = (sec, num) => {
const now = new Date().getTime() // 獲取進入方法時的時間
let flag = true
let count = 0
while (flag) {
count++
const after = new Date().getTime() // 執行到此的時間
const dealy = sec * 1000
if (after - dealy >= now) { // 比較是否已經過了設置的時間
flag = false
}
}
return new Promise((resolve, reject) => {
resolve(num * num)
})
}
// 使用async包裝返回Promise的方法
async function tryWithAsync(sec, num) {
const res = await timeout(sec, num)
return res
}
tryWithAsync(3, 10).then(value => console.info(value)) // 🚀🚀 100
// 直接調用返回Promise的方法
let result = ''
const res = timeout(1, 20)
console.info(res) // 🚀🚀 Promise { 400 }
// 返回的是一個promise,promise中resolve中的值需要在then中拿到
res.then(x => { // 微任務先執行
console.info(x) // 🚀🚀 400
})