const dbConnection = require("../dbConnection");
var task = function () {
var response = "";
dbConnection.then(function () {
//do something here
response = "some value";
})
.catch(function () {
response = new Error("could not connect to DB");
});
//I can't return response here because the promise is not yet resolved/rejected.
}
我正在使用别人写的节点模块。它返回一个承诺。我想返回一个字符串或new Error()
,具体取决于模块返回的Promise对象是否已解析。我怎么能这样做?
我无法在finally()
回调中返回,因为return
将应用于回调函数而不是我的task
函数。
答案 0 :(得分:0)
dbConnection.then().catch()
本身会返回一个承诺。考虑到这一点,我们可以简单地将代码编写为return dbConnection.then()
,并让使用该函数的代码将返回值视为promise。例如,
var task = function () {
return dbConnection.then(function() {
return "Good thing!"
}).catch(function() {
return new Error("Bad thing.")
})
}
task().then(function(result){
// Operate on the result
}
答案 1 :(得分:0)
tab_valutazioni
这将返回一个你可以链接的承诺。
使用promises的意义类似于使用回调。你不希望CPU坐在那里等待响应。