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。

相关推荐
这儿有一堆花1 分钟前
告别 Class 组件:拥抱 React Hooks 带来的函数式新范式
前端·javascript·react.js
Zyx20072 小时前
深拷贝:JavaScript 中对象复制的终极解法
javascript
开发者小天2 小时前
React中的componentWillUnmount 使用
前端·javascript·vue.js·react.js
sunly_2 小时前
Flutter:视频预览功能
javascript·flutter·音视频
杰克尼3 小时前
vue_day04
前端·javascript·vue.js
小皮虾4 小时前
小程序云开发有类似 uniCloud 云对象的方案吗?有的兄弟,有的!
前端·javascript·小程序·云开发
阳懿5 小时前
meta-llama-3-8B下载失败解决。
前端·javascript·html
史林枫5 小时前
JavaScript 中call和apply的详细讲解 —— 连10岁的小朋友都能看懂!
javascript·apply·call
紫小米5 小时前
Vue 2 和 Vue 3 的区别
前端·javascript·vue.js
用户6600676685396 小时前
从变量提升到调用栈:V8 引擎如何 “读懂” JS 代码
前端·javascript