我看了一下bluebird promise FAQ,其中提到了这.then(success, fail)
是一个反模式.我不太了解它对try和catch的解释.以下是什么问题?
some_promise_call()
.then(function(res) { logger.log(res) }, function(err) { logger.log(err) })
Run Code Online (Sandbox Code Playgroud)
似乎这个例子建议以下是正确的方法.
some_promise_call()
.then(function(res) { logger.log(res) })
.catch(function(err) { logger.log(err) })
Run Code Online (Sandbox Code Playgroud)
有什么不同?
我看到Bluebird的文档,finally
但我仍然不太了解与之相比的差异then
.
要清楚:我确切地知道为什么then
在a之后调用catch
.我希望在捕获之后调用它.这是意图.我的问题是:如果我希望代码总是被执行而不管承诺状态,那么then
vs 之间的区别finally
是什么?
我建立了这个测试:
var Promise = require("bluebird");
function test1 () {
console.log("RESOLVE + THEN + CATCH + THEN");
return new Promise((resolve, reject) => resolve())
.then(() => console.log("then"))
.catch(err => console.log("error:", err.message))
.then(() => console.log("end"));
}
function test2 () {
console.log("REJECT + THEN + CATCH + THEN");
return new Promise((resolve, reject) => reject(new Error("rejected")))
.then(() => console.log("then"))
.catch(err => console.log("error:", err.message))
.then(() => console.log("end")); …
Run Code Online (Sandbox Code Playgroud)