Promise.all 方法的参数可以是哪些类型?

简介: Promise.all 方法的参数可以是哪些类型?

Promise 实例的 then() 方法是处理异步操作结果的核心方法,主要作用是:为 Promise 注册“成功/失败”的回调函数,并返回一个新的 Promise 对象,从而实现链式调用

具体作用拆解:

  1. 注册回调函数
    then() 可以接收两个可选参数,分别对应 Promise 两种状态的处理逻辑:

    • 第一个参数:onFulfilled 函数
      当 Promise 状态变为 成功(Fulfilled) 时触发,接收异步操作的“成功结果”作为参数。
    • 第二个参数:onRejected 函数(可选)
      当 Promise 状态变为 失败(Rejected) 时触发,接收异步操作的“失败原因”作为参数。

    示例:

    new Promise((resolve, reject) => {
         
      resolve("成功结果"); // 模拟异步操作成功
    }).then(
      (result) => {
          console.log("成功处理:", result); }, // 成功回调
      (error) => {
          console.log("失败处理:", error); }    // 失败回调(可选)
    );
    
  1. 返回新的 Promise,支持链式调用
    then() 方法会返回一个全新的 Promise 对象,这是实现链式调用的关键。新 Promise 的状态和结果由以下规则决定:

    • 如果 onFulfilled/onRejected 回调返回一个普通值(非 Promise),新 Promise 会立即变为成功状态,结果为该返回值。
    • 如果回调返回一个 Promise 对象,新 Promise 会“继承”这个 Promise 的状态和结果(等待其完成,再决定自身状态)。
    • 如果回调抛出错误throw new Error(...)),新 Promise 会变为失败状态,结果为抛出的错误。

    示例(链式调用):

    // 链式调用:上一个 then() 的返回值会作为下一个 then() 的输入
    Promise.resolve(1)
      .then(num => num * 2) // 返回普通值 2 → 新 Promise 成功,结果为 2
      .then(num => Promise.resolve(num + 3)) // 返回 Promise → 新 Promise 成功,结果为 5
      .then(num => console.log(num)); // 输出:5
    
  1. 分离成功与失败逻辑
    虽然 then() 可以通过第二个参数处理失败,但更推荐用 catch() 专门处理错误(catch() 本质是 then(null, onRejected) 的语法糖)。这样可以让成功逻辑和失败逻辑更清晰:
    fetchData()
      .then(data => {
          /* 处理成功 */ }) // 只关注成功逻辑
      .catch(error => {
          /* 处理失败 */ }); // 统一捕获所有环节的错误
    

总结:

then() 方法的核心价值是:将异步操作的“后续处理逻辑”与“异步操作本身”解耦,并通过返回新 Promise 实现链式调用,让多步异步操作的代码像同步代码一样线性书写,避免了回调地狱。

目录
相关文章
|
机器学习/深度学习
信道编码译码及MATLAB仿真(三)
信道编码译码及MATLAB仿真
693 3
|
2月前
|
人工智能 安全 架构师
告别旅行规划的"需求文档地狱"!这个AI提示词库,让你像调API一样定制完美旅程
作为开发者,旅行规划如同“需求地狱”:信息碎片、需求多变、缺乏测试。本文提出一套“企业级”AI提示词库,将模糊需求转化为结构化“API请求”,实现标准化输入输出,让AI成为你的专属旅行架构师,30分钟生成专业定制方案,提升决策质量,降低90%时间成本。
434 129
|
2月前
|
数据采集 监控 JavaScript
移动端性能监控探索:鸿蒙 NEXT 探针架构与技术实现
阿里云 ARMS 团队倾力打造的鸿蒙 NEXT SDK,为鸿蒙应用提供了业界领先的全链路监控解决方案。这不仅仅是一个 SDK,更是您洞察用户体验、优化应用性能的智能伙伴。
511 23
|
1月前
|
存储 JSON 安全
加密和解密函数的具体实现代码
加密和解密函数的具体实现代码
303 136
|
缓存 JavaScript 前端开发
【Node系列】Buffer详解
JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。 但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。 Node.js中的Buffer是一个全局对象,属于固有(built-in)类型的全局变量,不需要使用require函数导入。它允许直接操作原始内存,主要用于处理二进制数据流。Buffer实例对象的结构和整数数组很像,但Buffer的大小是固定的且在V8堆外分配物理内存。
305 2
|
JavaScript 前端开发 UED
JS:如何获取浏览器窗口尺寸?
JS:如何获取浏览器窗口尺寸?
491 1
|
5月前
|
Web App开发 前端开发 JavaScript
前端性能优化利器:图片懒加载实战解析
前端性能优化利器:图片懒加载实战解析
|
12月前
|
存储 缓存 JavaScript
如何优化Node.js应用的内存使用以提高性能?
通过以上多种方法的综合运用,可以有效地优化 Node.js 应用的内存使用,提高性能,提升用户体验。同时,不断关注内存管理的最新技术和最佳实践,持续改进应用的性能表现。
546 62
|
JavaScript
Vue3基础(20)___Vue3配置错误路由重定向写法
本文介绍了Vue 3中配置错误路由重定向的正确写法,包括使用参数和自定义正则表达式来定义通配符路由。
220 0
Vue3基础(20)___Vue3配置错误路由重定向写法
|
JavaScript 前端开发 容器
< 每日小技巧: 基于Vue状态的过渡动画 - Transition 和 TransitionGroup>
Vue 的 `Transition` 和 `TransitionGroup` 是用于状态变化过渡和动画的组件。`Transition` 适用于单一元素或组件的进入和离开动画,而 `TransitionGroup` 用于 v-for 列表元素的增删改动画,支持 CSS 过渡和 JS 钩子。
379 1
< 每日小技巧: 基于Vue状态的过渡动画 - Transition 和 TransitionGroup>