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
})

相关文章:

  • 2021-12-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-23
猜你喜欢
  • 2021-06-22
  • 2021-11-07
  • 2021-11-20
  • 2022-01-25
  • 2021-09-07
  • 2022-12-23
相关资源
相似解决方案