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。

相关推荐
cyclv2 小时前
无网络地图展示轨迹,地图瓦片下载,绘制管线
前端·javascript
HIT_Weston4 小时前
41、【Agent】【OpenCode】本地代理分析(五)
javascript·人工智能·opencode
前端Hardy5 小时前
前端必看!LocalStorage这么用,再也不踩坑(多框架通用,直接复制)
前端·javascript·面试
前端Hardy5 小时前
前端必看!前端路由守卫这么写,再也不担心权限混乱(Vue/React通用)
前端·javascript·面试
竹林8185 小时前
从ethers.js迁移到Viem:我在重构DeFi前端时踩过的那些坑
前端·javascript
前端郭德纲5 小时前
JavaScript Object.freeze() 详解
开发语言·javascript·ecmascript
希望永不加班6 小时前
SpringBoot 静态资源访问(图片/JS/CSS)配置详解
java·javascript·css·spring boot·后端
m0_738120726 小时前
渗透基础知识ctfshow——Web应用安全与防护(第一章)
服务器·前端·javascript·安全·web安全·网络安全
持续前行6 小时前
通过 npm 下载node_modules 某个依赖 ;例如 下载 @rollup/rollup-linux-arm64-gnu
前端·javascript·vue.js
Embrace9247 小时前
React Native + Realm 离线方案处理
javascript·react native·react.js·realm