$q
我知道我可以:
myPromise() .then((response) => { // Do my important stuff here }) .catch((response) => { // Copy code from above })
还有这个(稍微好一点):
myPromise() .catch(() => {}) .then((response) => { // Do my important stuff here, and only write it once })
但我想写点东西:
myPromise() .finally((response) => { // Do my important stuff here, only written once })
.finally() 如果没有先处理解析/拒绝的then()或catch()块,则不会运行。
.finally()
你可以这么做,但问题是 为什么? 而不是 怎样
.finally() 即使没有也要跑 .then() 或 .catch() 在它前面。但是这样做是一种反模式,正如Claies在问题下面的注释中提到的,因为您避免处理可能阻止代码运行的错误。
.then()
.catch()
另外,因为 最后() 不公开回应或提供新的承诺,它在实用性上不如其他两个。实际上,它只适用于有限的情况——运行不管promise的命运如何都应该执行的代码,例如清理设置为向应用程序其余部分指示promise尚未返回的变量。
最后()
所以,尽管这不是一个完全没有意义的问题,但这并不是一个现实的场景——你想在哪里跑步 没有 。然后() .
。然后()