承诺:然后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版本。