我有两个简单的函数如下,一个是callback,另一个是Promise,在回调函数中,我可以知道函数调用者是否捕获了异常,但在Promise函数中我不知道如何处理。
第一个
let call = function(a,b,success,fail){
if(a==b){
success();
}
else{
if(fail){
fail();
}
else{
alert("a is not equal b");
}
}
}
第二个
let call = function(a,b){
return new Promise(resolve,reject){
if(a==b){
resolve();
}
else{
//I want to code here, if the call is not catch error,
//the system alert("a is not equal b"), otherwise call the reject.
}
}
}
没有好的方法知道调用者是否正在处理承诺拒绝。有些方法在某些情况下是有效的,但我不建议你这么做。
所有的承诺都要求调用者处理任何可能的拒绝——这不是可选的。这是有承诺的法律。这是使用API契约的一部分。试图弥补客户端编写的错误代码并不是API本身的责任,并且承诺也不是为了使其可行而设计的。
因此,您不能根据是否处理承诺拒绝来更改函数的行为。