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。

相关推荐
三十而立洋5 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁5 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
李少兄5 天前
JavaScript 隐式全局变量解析
javascript
沙蒿同学5 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端
paopaokaka_luck6 天前
智慧社区综合服务小程序(人脸识别、AI问答、Echarts图形化分析)
前端·javascript·spring boot·spring·数据分析·echarts
Hilaku6 天前
为什么死磕 1px 的团队,用户体验反而更差?
前端·javascript·程序员
陈拉斯6 天前
给公司年会写了个大屏抽奖系统:动画在前端跑,凭什么说结果没被改?
javascript
yzy856 天前
Vue中下载或打开文件的JavaScript方法
前端·javascript·vue
用户298698530146 天前
在 React 中用 JavaScript 将 Word 转换为文本
前端·javascript·react.js
李少兄6 天前
深入解析 JavaScript 中的 `document` 对象
javascript