技术资讯:一个Promise全新API,真好用!

大家好,我是大澈!

本文约800+字,整篇阅读大约需要1分钟。

感谢关注微信公众号:"程序员大澈",免费领取"面试礼包"一份,然后免费加入问答群,从此让解决问题的你不再孤单!

1. 资讯速览

最近,Promise 新出了一个方法,已经进入 Stage 3 (候选阶段) ,相信很快就能达到 Stage 4 (完成阶段),并在项目中广泛使用。

这个方法就是 Promise.withResolvers。它是一个静态方法,返回一个包含新的 Promise 对象和两个函数的对象。

其中,两个函数即:resolve 和 reject。分别对应于传递给 Promise 构造函数执行器的两个参数。

Promise.withResolvers 的关键点,在于现在解决和拒绝函数与 Promise 对象本身处于同一作用域,而不是在执行器中创建并且只能使用一次。

这使得在某些更高级的用例中可能会更加方便,例如:在重复事件中重用解决和拒绝函数,特别是在处理流和队列时。这也意味着嵌套层级较少,而不是在执行器中包含大量逻辑。

2. 资讯详细

先举例对比说明该方法的妙用,再补充一下注意点,最后做小结。

2.1 举例说明

在没有 Promise.withResolvers 之前,你可能实现了这样的代码:

js 复制代码
<script>
  let num = true;
  let resolve, reject;

  const promise = new Promise((res, rej) => {
      resolve = res;
      reject = rej;
  });

  num ? resolve("ok") : reject("not ok");
</script>

在使用 Promise.withResolvers 之后:

js 复制代码
<script>
  let num = true;

  const { promise, resolve, reject } = Promise.withResolvers();

  num ? resolve("ok") : reject("not ok");
</script>

很明显的发现,当我们单独使用 resolve 和 reject 时,用上 Promise.withResolvers ,不需要再定义一个额外的变量去存储。

2.2 注意点

该特性目前还在 Stage 3 阶段,预计2024年正式发版。

目前主流浏览器还没有全部支持该特性,谷歌需要 117以上的版本才能使用这个方法。

2.3 小结

Promise 新出了一个方法,已经进入 Stage 3 (候选阶段)。

它的关键点,在于现在解决和拒绝函数与 Promise 对象本身处于同一作用域,而不是在执行器中创建并且只能使用一次。

结语

建立这个平台的初衷:

  • 打造一个专注于前端功能问题的问答平台,让大家高效搜索处理同样问题。
  • 遇到有共鸣的问题,与众多同行朋友们一起讨论,一起沉淀成长。
  • 平台现拥有功能问题、技术资讯、实用干货3个专栏内容。

感谢关注微信公众号:"程序员大澈",免费领取"面试礼包"一份,然后免费加入问答群,从此让解决问题的你不再孤单!

相关推荐
Ai-_Man4 小时前
您您这可以把Grok的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭
javascript·人工智能·ai·小程序·电脑
传人once4 小时前
多图片上传预览功能如何写
前端·css·html·jquery·html5
liangshanbo12155 小时前
JavaScript 异步核心主线
javascript·事件循环·异步操作
传人once6 小时前
悬停旋转放大和位移效果如何写
javascript·css·动画
默_笙7 小时前
🍔 中间件不只是打日志:四个钩子、一次短路,和自带的工具
前端·javascript
Dovis(誓平步青云)8 小时前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
xieter9 小时前
【技术精选】TypeScript 高级类型体操:条件类型与模板字面量深度剖析 (2026-10-06)
javascript
ss2739 小时前
AI全栈实战 | 3.3-02 Python 并发:有 GIL 为什么还用多线程,asyncio 和 JS 事件循环同源不同味
开发语言·javascript·python
CappuccinoRose10 小时前
输入事件进阶
前端·javascript·输入事件
5008412 小时前
React Native for OpenHarmony 实战:三方库 react-native-url-polyfill 的鸿蒙化适配指南
javascript·react native·react.js·性能优化·electron·harmonyos