new Promise(resolve => setTimeout(resolve, 5000))

复制代码
这种写法的目的是创建一个 Promise 对象,该对象在一定延迟后自动解决(resolve),

这样就可以在 await 关键字后面创建一个暂停的效果,直到 Promise 被解决,

这种技巧通常用于实现异步操作的等待,例如在重试逻辑中等待一段时间后再次尝试,
javascript 复制代码
  async function delayExecution() {
    console.log('Start')
    await new Promise(resolve => setTimeout(resolve, 5000)) // 等待5秒
    console.log('After 5 second')
  }

  delayExecution()



在JS中,Promise构造函数,接受一个带有两个参数的函数Fn作为参数,这个函数Fn本身接受两个参数:resolve 和 reject,

在 new Promise(resolve => setTimeout(resolve, 5000)) 中,只有一个参数resolve,这是因为使用了箭头函数的简写形式,

实际上,箭头函数的简写形式等同于以下代码:

javascript 复制代码
new Promise((resolve, reject) => {
  setTimeout(resolve, delay)
})

在这种简写形式中,如果没有显式地调用reject,那么 Promise 就会默认使用 resolve,

因此,即使只有一个参数,在这种情况下也会正常工作,

setTimeout在延迟结束后会自动调用resolve,从而履行(fulfill)这个 Promise。

相关推荐
EatFan9 小时前
React 项目踩坑实录:useEffect 闭包陷阱、Context 性能陷阱与 React 18 升级避坑排查手册
前端·javascript·react.js·react·react hooks·useeffect·闭包陷阱
w2sfot12 小时前
【JS加密在线】jsjiami.online(让JavaScript 更安全!)
开发语言·javascript·安全
杨杰39816 小时前
我给嵌入式设备写了个 6MB 的 JavaScript 运行时(xuan)
javascript
只睡四小时17 小时前
AI 生成 PPTX:11 页课件编译出 429 个形状
javascript·python·pptx·ai生成ppt·ooxml
shmily麻瓜小菜鸡18 小时前
Axios 中 params 与 data 的区别与原理
javascript·typescript
isha18 小时前
Univer拆解——从类与方法的视角分析
前端·javascript
变与不变80618 小时前
GET请求知识详解
前端·javascript
哎哟喂呢哈21 小时前
VedioJS 10
javascript·html5
夏幻灵1 天前
JavaScript this 面试:五种绑定规则、优先级与常见面试陷阱
开发语言·javascript·面试
三天不学习1 天前
Egg.js 4 突然爆火,原因是否归结于AI 原生落地需求爆发?
前端·javascript·全栈·egg.js