该特性处于 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。