Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Promise.prototype.catch()

该特性处于 ECMAScript 6 规范草案中,目前的实现在未来可能会发生微调,请谨慎使用。

概述

catch() 方法只处理Promise被拒绝的情况,并返回一个Promise。该方法的行为和调用Promise.prototype.then(undefined, onRejected)相同。

语法

p.catch(onRejected);

p.catch(function(reason) {
   // 拒绝
});

参数

onRejected
当Promise被拒绝时调用的Function。该函数调用时会传入一个参数:拒绝原因。

描述

catch方法主要作用于处理promise组合。

示例

使用catch方法

var p1 = new Promise(function(resolve, reject) {
  resolve("成功");
});

p1.then(function(value) {
  console.log(value); // "成功!"
  throw "哦,不!";
}).catch(function(e) {
  console.log(e); // "哦,不!"
});

规范

规范 状态 备注
domenic/promises-unwrapping 草稿 标准化工作正在这里进行
ECMAScript 6 (ECMA-262)
Promise.prototype.catch
Release Candidate ECMA标准中的首次定义

浏览器兼容性

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 32 24.0 (24.0) as Future
25.0 (25.0) as Promise behind a flag[1]
29.0 (29.0) by default
未实现 19 7.1
Feature Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support 未实现 24.0 (24.0) as Future
25.0 (25.0) as Promise behind a flag[1]
29.0 (29.0) by default
未实现 未实现 iOS 8 32

[1] Gecko 24实验性地实施了Promise类,它最初被命名为Future,在Gecko 25被重新命名为现在的名字, 但在dom.promise.enabled设置中被默认禁用。 Bug 918806 Gecko 29开始默认启用Promise。

参见

文档标签和贡献者

 此页面的贡献者: fskuok, mountainmoon
 最后编辑者: fskuok,