我认为有类似的问题,但并没有完全回答我的想法。
在ECMA-262 25.4.5.1的规范中,它声明:
使用参数 onRejected 调用 catch 方法时,将执行以下步骤:
- 承诺是此值
醇>
这是否意味着在承诺的catch方法中,应该解析为承诺?
如果我这样做:
Promise.reject(1).catch(function (res) {console.log(this)})
在chrome和Node 4中记录全局对象
答案 0 :(得分:3)
不,这不是它的意思。
使用参数 onRejected 调用
function showModalBoxForInvalidSessionInfo(){ $("#modelView").dialog({ autoOpen : false, modal : true, buttons : [ { text : "OK", icons : { primary : "ui-icon-heart" }, click : function() { $(this).dialog("close"); window.close(); } }] }); $("#modelView" ).dialog("open"); $("#modelView").text("Logout Succesfully"); }
方法时,将采取以下步骤:
- 让承诺为此值。
- 回来?调用(承诺,然后“,”未定义, onRejected »)。
醇>
这只是声明catch
的定义,即:
promise.catch
所以调用Promise.prototype.catch = function(onRejected) {
// Let promise be the this value.
var promise = this;
// Return ? Invoke(promise, "then", « undefined, onRejected »).
return promise.then(undefined, onRejected);
}
等同于调用
promise.catch(onRejected)
。