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。

相关推荐
SuperEugene2 小时前
表单最佳实践:从 v-model 到自定义表单组件(含校验)
前端·javascript·vue.js
不会敲代码12 小时前
React性能优化:深入理解useMemo和useCallback
前端·javascript·react.js
YukiMori234 小时前
一个有趣的原型继承实验:为什么“男人也会生孩子”?从对象赋值到构造函数继承的完整推演
前端·javascript
摸鱼的春哥5 小时前
惊!黑客靠AI把墨西哥政府打穿了,海量数据被黑
前端·javascript·后端
小兵张健5 小时前
Playwright MCP 截图标注方案调研(推荐方案1)
前端·javascript·github
我叫黑大帅7 小时前
Vue3和Uniapp的爱恨情仇:小白也能懂的跨端秘籍
前端·javascript·vue.js
None3217 小时前
【NestJs】使用Winston+ELK分布式链路追踪日志采集
javascript·node.js
Qinana8 小时前
从代码到智能体:MCP 协议如何重塑 AI Agent 的边界
前端·javascript·mcp
Marshall1518 小时前
zzy-scroll-timer:一个跨框架的滚动定时器插件
前端·javascript
明月_清风10 小时前
打字机效果优化:用 requestAnimationFrame 缓冲高频文字更新
前端·javascript