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。

相关推荐
AI_paid_community15 小时前
25k Star 登顶 GitHub:这个专门吃 K 线图长大的 AI,让我意识到之前三年都在裸奔
javascript·claude
gjwjuejin16 小时前
前端埋点第二弹:那些年我们踩过的坑,和填坑的正确姿势
javascript
我叫黑大帅16 小时前
通过白名单解决 pnpm i 报错 Ignored build scripts
前端·javascript·面试
gjwjuejin16 小时前
前端埋点不头秃:从打点代码到数据分析的完整实战
javascript
Schafferyy16 小时前
【vue3】Form表单重置不生效
javascript·vue.js
星恒随风17 小时前
四天学完前端基础三件套(JavaScript篇)
开发语言·前端·javascript·笔记
杜子不疼.18 小时前
【 C++ AI 大模型接入 SDK】 - 日志模块
开发语言·javascript·c++
Dxy123931021618 小时前
如何使用jQuery获取一类元素并遍历它们
前端·javascript·jquery
likerhood19 小时前
Java 访问修饰符:public、protected、private讲解
java·开发语言·javascript
刀法如飞19 小时前
JavaScript 数组去重的 20 种实现方式,学会用不同思路解决问题
前端·javascript·算法