笔记:ES6中的promise

本文深入讲解Promise对象的状态、创建及调用方式,包括单个与多个异步操作的处理,如Promise.all与Promise.race的使用。同时,详细解析then与catch方法的功能,以及如何通过链式调用来优化异步编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Promise

状态:pending / fulfilled / reject

作用:将异步操作队列化,解决回调地狱

创建Promise对象: new Promise(function(resolve, reject){...})//resolve()---成功时调用;reject()---失败时调用;

调用

  1. 单个调用:对象.then()
  2. 多个调用(要求所有请求都成功):Promise.all([对象1,对象2...]).then(//成功).catch(//失败)
  3. 多个调用(其中一个请求成功):Promise.race([对象1,对象2...]).then(//成功).catch(//失败)

:promise对象一旦被创建,即对应为pending状态(等待),执行then,执行成功状态变为fulfilled,调用resolve的回调方法,反之状态变为reject,调用reject函数。

then

每次then方法都会得到对应promise对象,且可以无限调用。相连then方法可接受上一步返回值。

可以用链式then来代替嵌套。

catch

捕捉链式then中的错误。注意:会中断错误点后续then方法

可以捕获前面所有的错误(可以捕获N个then回调错误)

注意:一旦 Promise 对象已经 resolve,其后的运行时错误将被忽略:

let p = new Promise((resolve, reject) => {
  resolve();
  reject("error")
});

p.catch(err => {
  console.log("catch " + err); // 不会被执行
});

错误处理两种做法

第一种:reject('错误信息').then(() => {}, () => {错误处理逻辑})
第二种:throw new Error('错误信息').catch( () => {错误处理逻辑}) //推荐

return的值

与 then 方法相同,执行后会 return 一个新的 Promise 对象,以实现链式调用,你可以显式的 return 一个 Promise 对象,若不显式的 return 则会 return 一个以 undefined 值 resolve 的 Promise 对象;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值