Skip to content

catch方法 ​

.catch(onRejected) = .then(null, onRejected)

一般来说,我们使用 then 方法处理成功,使用 catch 方法处理失败

链式调用 ​

54dfcdeec1c046276a681b25e008430e_MD5

  1. then方法必定会返回一个新的Promise

    可理解为后续处理也是一个任务

  2. 新任务的状态取决于后续处理:

    • 若没有相关的后续处理,新任务的状态和前任务一致,数据为前任务的数据

    • 若有后续处理但还未执行,新任务挂起。

    • 若后续处理执行了,则根据后续处理的情况确定新任务的状态

      • 后续处理执行无错,新任务的状态为完成,数据为后续处理的返回值

      • 后续处理执行有错,新任务的状态为失败,数据为异常对象

      • 后续执行后返回的是一个任务对象,新任务的状态和数据与该任务对象一致

由于链式任务的存在,异步代码拥有了更强的表达力

js
 // 常见任务处理代码  
 ​  
 /*  
  * 任务成功后,执行处理1,失败则执行处理2  
  */  
 pro.then(处理1).catch(处理2)  
 ​  
 /*  
  * 任务成功后,依次执行处理1、处理2  
  */  
 pro.then(处理1).then(处理2)  
 ​  
 /*  
  * 任务成功后,依次执行处理1、处理2,若任务失败或前面的处理有错,执行处理3  
  */  
 pro.then(处理1).then(处理2).catch(处理3)

以笔记为镜,可以知得失