我看了蓝鸟诺言常见问题解答,其中提到这.then(success, fail)
是一种反模式。我对试捕一无所知。以下是什么问题?
some_promise_call()
.then(function(res) { logger.log(res) }, function(err) { logger.log(err) })
似乎该示例建议以下是正确的方法。
some_promise_call()
.then(function(res) { logger.log(res) })
.catch(function(err) { logger.log(err) })
有什么不同?
使用
then()
并catch()
帮助将成功和失败处理程序按承诺进行链接。catch()
履行诺言返回的承诺then()
。它处理then()
无法对此进行处理。)1. let promiseRef: Promise = this. aTimetakingTask (false); 2. promiseRef 3. .then( 4. (result) => { 5. /* successfully, resolved promise. 6. Work on data here */ 7. }, 8. (error) => console.log(error) 9. ) 10. .catch( (e) => { 11. /* successfully, resolved promise. 12. Work on data here */ 13. });
这是有道理的,因为
then()
如果回调正在处理的话,promise返回的promise 不会出错。