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

徐州市网站沧州app商城定制开发

徐州市网站,沧州app商城定制开发,关于 建设 二级网站,创建全国文明城市黑板报Promise 的状态和方法 1. Promise 的状态 一个 Promise 可以处于以下三种状态之一: - Pending(待定):初始状态,表示异步操作正在进行中,Promise 还没有被解决或拒绝。 - Fulfilled(已完成&…

 `Promise` 的状态和方法

 1. `Promise` 的状态

一个 `Promise` 可以处于以下三种状态之一:

- Pending(待定):初始状态,表示异步操作正在进行中,`Promise` 还没有被解决或拒绝。
- Fulfilled(已完成):操作成功完成,`Promise` 已经 resolved(解决),并返回结果。
- Rejected(已拒绝):操作失败,`Promise` 已经 rejected(拒绝),并返回错误原因。

这三个状态是 `Promise` 在生命周期中会经历的状态,一旦状态从 Pending 变为 Fulfilled 或 Rejected,它就不能再改变状态。

 2. `Promise` 的方法

`Promise` 提供了一些常用的方法来处理异步操作的结果。这些方法用于设置 `Promise` 完成时的行为或处理错误。

1. `then(onFulfilled, onRejected)`

- `then()` 方法用于指定当 `Promise` 成功时(状态变为 `Fulfilled`)执行的回调函数,以及当 `Promise` 失败时(状态变为 `Rejected`)执行的回调函数。
- `onFulfilled` 是操作成功时的回调,`onRejected` 是操作失败时的回调。

javascript
promise.then(result => {console.log('操作成功:', result);},error => {console.log('操作失败:', error);}
);


 

链式调用:
- `then()` 返回一个新的 `Promise` 对象,因此可以进行链式调用。链式调用的返回值会传递到下一个 `then()` 中。

javascript
promise.then(result => {return result + ' 继续执行';}).then(newResult => {console.log(newResult);  // '继续执行'}).catch(error => {console.log(error);});


 

 2. `catch(onRejected)`

- `catch()` 方法是专门用来处理 `Promise` 被拒绝(即状态为 `Rejected`)时的回调。它实际上是 `.then(null, onRejected)` 的简写。

javascript
promise.then(result => {console.log(result);}).catch(error => {console.error('操作失败:', error);});


 

 3. `finally(onFinally)`

- `finally()` 方法用于在 `Promise` 执行完毕后,无论成功还是失败,都会执行 `onFinally` 回调函数。`finally` 返回的 `Promise` 对象会继承原 `Promise` 的状态。

javascript
promise.then(result => {console.log('成功:', result);}).catch(error => {console.log('失败:', error);}).finally(() => {console.log('无论成功或失败都会执行');});


 

 4. `Promise.resolve(value)`

- `Promise.resolve(value)` 方法返回一个已经 `fulfilled` 状态的 `Promise`,并且返回 `value` 作为结果。
- 如果传入的是一个 `Promise` 对象,则返回该 `Promise` 对象。

javascript
let resolvedPromise = Promise.resolve('成功');
resolvedPromise.then(result => {console.log(result);  // '成功'
});


 

5. `Promise.reject(reason)`

- `Promise.reject(reason)` 方法返回一个已经 `rejected` 状态的 `Promise`,并且返回 `reason` 作为拒绝的原因。

javascript
let rejectedPromise = Promise.reject('失败');
rejectedPromise.catch(error => {console.log(error);  // '失败'
});

6. `Promise.all(iterable)`

- `Promise.all()` 方法接收一个可迭代对象(例如数组),并返回一个新的 `Promise`。该 `Promise` 会等到所有的 `Promise` 都完成时才会被 `fulfilled`,或者当其中一个 `Promise` 被 `rejected` 时就被 `rejected`。
- 该方法适用于需要并行执行多个异步操作,并等待它们全部完成的场景。

javascript
let promise1 = Promise.resolve(1);
let promise2 = Promise.resolve(2);
let promise3 = Promise.resolve(3);Promise.all([promise1, promise2, promise3]).then(results => {console.log(results);  // [1, 2, 3]}).catch(error => {console.error(error);});


 

 7. `Promise.race(iterable)`

- `Promise.race()` 方法接收一个可迭代对象(例如数组),并返回一个新的 `Promise`。该 `Promise` 在第一个 `Promise` 完成(无论是 `fulfilled` 还是 `rejected`)时就会结束,不再等待其他 `Promise` 完成。

javascript
let promise1 = new Promise(resolve => setTimeout(resolve, 100, 'A'));
let promise2 = new Promise(resolve => setTimeout(resolve, 200, 'B'));Promise.race([promise1, promise2]).then(result => {console.log(result);  // 'A' (第一个完成的 Promise)});


 

 3. 总结

- `then()`:用于处理成功和失败的回调,支持链式调用。
- `catch()`:用于处理 `Promise` 被拒绝时的回调,简化错误处理。
- `finally()`:无论成功或失败都执行的回调,用于执行清理操作。
- `Promise.resolve()`:用于返回一个已解决的 `Promise`。
- `Promise.reject()`:用于返回一个已拒绝的 `Promise`。
- `Promise.all()`:用于并行执行多个异步操作,所有操作完成后才会返回。
- `Promise.race()`:用于返回第一个完成的异步操作。

这些方法帮助我们更优雅地处理异步操作,避免回调地狱,并简化错误处理。


文章转载自:

http://M0DE9qin.cprbp.cn
http://R4pQmIAE.cprbp.cn
http://MJZIXSiR.cprbp.cn
http://oH9CdkJD.cprbp.cn
http://qLNw0wp8.cprbp.cn
http://lEx8g69m.cprbp.cn
http://07tdErp1.cprbp.cn
http://jPTBUiyu.cprbp.cn
http://LeY206r3.cprbp.cn
http://HEyBUKAR.cprbp.cn
http://S74QgVYn.cprbp.cn
http://urYZcqYB.cprbp.cn
http://iWMT9kiv.cprbp.cn
http://gArNw8rm.cprbp.cn
http://aY0oGKRK.cprbp.cn
http://03Ungubj.cprbp.cn
http://MIeIvltV.cprbp.cn
http://X4ksMVxp.cprbp.cn
http://ckFE7VGP.cprbp.cn
http://Knt3hb60.cprbp.cn
http://LErpUVIC.cprbp.cn
http://6tWwadcA.cprbp.cn
http://EXxljo5z.cprbp.cn
http://zgj11HHr.cprbp.cn
http://rmIDAYFR.cprbp.cn
http://yKSoCvF7.cprbp.cn
http://02fQjXha.cprbp.cn
http://kGRbqNK5.cprbp.cn
http://Tv3fu0Vb.cprbp.cn
http://woRhhvym.cprbp.cn
http://www.dtcms.com/wzjs/667035.html

相关文章:

  • app网站开发哪家好五指山网站开发价格
  • 网站制作属于什么行业上海电子手工活外发加工网
  • 百度网站建设目标网页翻译功能
  • 怎么推广自己的网站怎么自己做网址
  • 英铭网站建设设计效果图怎么收费
  • 站长工具seo综合查询 正品蓝导航做网站设计需要哪些软件
  • wordpress 站长工具西安网站开发公司怎么选
  • 免费微网站开发wordpress手机 主题
  • 做网站公司简介模版免费网站建设服务
  • odoo网站建设网页模板设计
  • 年报是否就是在工商网站做的查网站备案号
  • 什么网站做简历免费下载网站正在建设中动画
  • 新手学做网站灌南县城乡建设局网站
  • 购物网站主页模版淄博网站建设制作
  • 南昌网站seo技术厂家番禺哪里有做网站的公司
  • 做自行车网站应该注意什么网站微信支付怎么做
  • 关于网站开发相关法律条款海外公司网站 国内做备案
  • 济南营销网站建设价格dw做网站简单首页
  • 凡科手机建站教程营销服务机构
  • 网站设计公司圣辉友联wordpress配置文件数据库
  • 山西省建设厅执业资格注册中心网站欧美网站建设排名
  • 手机网站版面设计云南网站建设哪家强
  • 网站搜索功能模块山东专业网站建设哪家便宜
  • 北京国贸网站建设网站被360拦截怎么办
  • 网站样式侵权有哪些网站可以做视频
  • 大连做网站排名怎样学网络推广
  • 旅游网站建设方案背景描述没有网站怎么做百度优化
  • 制作公司网站设计要求设计网名大全
  • 西安 网站设计网站解析域名时间
  • 电脑怎样做网站淘宝客网站 建设要钱不