当前位置: 首页 > news >正文

promise使用及其方法

实例方法

  • then():用于处理Promise成功状态的回调函数。它接受两个参数,第一个参数是Promise成功时的回调函数,第二个参数是可选的,用于处理Promise失败时的回调函数。then()方法返回一个新的Promise实例,这使得我们可以进行链式调用。
  • catch():用于处理Promise失败状态的回调函数。它等同于then(null, failureCallback),通常用于在Promise链的末尾统一处理错误。
  • finally():无论Promise是成功还是失败,都会执行的回调函数。它接受一个回调函数作为参数,该函数在Promise状态改变后执行,常用于执行一些清理或收尾工作。

静态方法

  • Promise.all():接受一个可迭代对象(通常是一个Promise数组)作为参数,并返回一个新的Promise。当所有给定的Promise都成功解决(resolved)时,新的Promise才会解决,并返回一个包含所有Promise解决值的数组。如果任何一个Promise被拒绝(rejected),Promise.all返回的Promise会立即被拒绝,并返回第一个被拒绝的Promise的原因。
  • Promise.allSettled():等待所有的Promise都被settle,无论结果如何。结果数组会是这样的:对成功的响应,结果数组对应元素的内容为{status: "fulfilled", value: result};对出现error的响应,结果数组对应元素的内容为{status: "rejected", reason: error}。
  • Promise.race():与Promise.all类似,但只等待第一个settled的Promise并获取其结果(或error)。
  • Promise.any():与Promise.race类似,区别在于Promise.any只等待第一个fulfilled的Promise,并将这个fulfilled的Promise返回。如果给出的Promise都rejected,那么返回的Promise会带有AggregateError——一个特殊的error对象,在其errors属性中存储着所有Promise error。
  • Promise.resolve():用结果value创建一个resolved的Promise。当一个函数被期望返回一个Promise时,这个方法用于兼容性。
  • Promise.reject():用error创建一个rejected的Promise。

实例:

const promise1 = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve('第一个任务完成');
    }, 2000);
});
const promise2 = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve('第二个任务完成');
    }, 1500);
});
const promise3 = new Promise((resolve, reject) => {
    setTimeout(() => {
        reject('a2失败');
    }, 2500);
});
// then() 和 catch()
promise1.then((result) => {
    console.log('成功回调: ', result);
}).catch((error) => {
    console.log('失败回调: ', error);
});
// finally()
promise2.then((result) => {
    console.log('成功结果: ', result);
}).finally(() => {
    console.log('无论成功或失败都会执行');
});
// promise.all()
Promise.all([promise1, promise2]).then((results) => {
    console.log('Promise.all结果: ', results);
}).catch((error) => {
    console.log('Promise.all失败: ', error);
});
// Promise.allSettled()
Promise.allSettled([promise2, promise3 ]).then((results) => {
    console.log('Promise.allSettled结果: ', results);
});
// Promise.any
Promise.any([promise1, promise2, promise3]).then((result) => {
    console.log('Promise.any结果: ', result);
}).catch((error) => {
    console.log('Promise.any失败: ', error);
});

相关文章:

  • CMake在Windows环境下Visual Studio Code的使用
  • 利用deepseek直接调用其他文生图网站生成图片
  • [VolgaCTF 2025] Baby-Welcome,BrokeBroke,Field Rules
  • nginx的自定义日志
  • 爬虫:网络请求(通信)步骤,http和https协议
  • C++算法——分治
  • MVC编程
  • Web网页内嵌 Adobe Pdf Reader 谷歌Chrome在线预览编辑PDF文档
  • 程序化广告行业(46/89):竞价结算规则、底价策略与内部排名解析
  • WPF 自定义路由事件
  • 题解:蓝桥杯 2023 省 B 接龙数列 - dp + 哈希map
  • 高通Android 8.1/9/10/11/12/13 通过包名设置默认launcher
  • [MySql] 多表关系, 多表查询
  • 消息中心系统架构设计
  • 14 配置Hadoop集群-配置历史和日志服务
  • Zemax与Matlab交互:双胶合优化详细流程
  • Qt图形化界面为何总被“冷落“?
  • IPv6协议
  • STM32 ADC转换完成回调函数详解 HAL_ADC_ConvCpltCallback与HAL_ADC_ConvHalfCpltCallback
  • 轮胎厂相关笔记
  • 网站开发出来为什么加载特别慢/公司网页制作模板
  • 怎样去查网站备案号/做推广哪个平台好
  • 建设网站用什么软件下载/竞价专员是做什么的
  • 做游戏试玩网站/小广告设计
  • 欧洲站vat激活/淘宝代运营公司十大排名
  • 《网站建设》项目实训报告/企业品牌营销推广