承诺:然后vs +然后捕获
以下两个代码是否有区别?
myPromise.then(function() { console.log('success'); }).catch(function() { console.log('error'); }); myPromise.then(function() { console.log('success'); }, function() { console.log('error'); });
我知道then
catch
返回新的承诺解决或拒绝与callback中的价值回报。 但是我看到networking上的2个代码,我很好奇2代码之间的真正差异。
在你当前的代码中,他们的行为相同,因为console.log('success');
不会失败。
但是,如果你写这样的东西…
myPromise.then(function() { // Some error may happen }).catch(function() { console.log('error'); }); // Is the same as this, the errHandle tries to catch any unhandled error // from previous result. myPromise.then(func, null).then(null, errHandle); myPromise.then(function() { // Some error may happen }, function() { // This won't log the error if it happens in the // some error may happen block. console.log('error'); }); // Is the same as this, the errHandle will handle errors from previous result, // but it won't handle errs in func. myPromise.then(func, errHandle)
第二种forms不能抓住那个错误,而第一种可以。
我猜这取决于Promise如何实施。 就我所知,jQuery以不同的方式实现它。
你给的第二个似乎是jQuery版本。