在这种情况下执行函数(getAvailableLabs)之后 - 我想执行回调或承诺。我不确定我应该执行哪个但是我无法继续工作。
路线:
router.get('/api/content_left', function(req, res, next){
const Labs = require("../models/Labs.js");
l = new Labs("Sample Lab", "Sample Description", "Sample Category", "Sample Tech");
l.getAvailableLabs(function(){
console.log("We made it here!");
});
console.log("This is post resposnse");
Labs.js:
getAvailableLabs() {
var d = db.any('select * from labs')
.then(data => {
console.log(data[0]);
return data
})
.catch(function (error) {
console.log(error + " - Error in function");
return error;
});
}
在上述情况下,它会记录“可用实验室结束”,然后是“这是回复后”。这就是我对回调理解的期望。然而它永远不会执行“我们在这里做到了!”我不明白为什么?我的印象是,如果我在函数中放置一个函数 - 它将作为回调执行,但这不会发生。我是否需要以特定方式返回执行回调?
感谢您的帮助。
答案 0 :(得分:5)
您的var firstbuild = document.getElementById("firstbuild");
函数不接受回调参数。我认为保持一致并使用承诺是最好的:
getAvailableLabs
如果您想使用回调代替承诺,我会写getAvailableLabs() {
return db.any('select * from labs')
.then(data => {
console.log(data[0]);
return data
})
.catch(function (error) {
console.log(error + " - Error in function");
return error;
});
}
...
l.getAvailableLabs().then(data => {
console.log("We made it here!");
});
:
getAvailableLabs
调用此功能:
getAvailableLabs (callback) {
db.any('select * from labs')
.then(data => {
console.log(data[0]);
if (callback) { callback(null, data); }
})
.catch(function (error) {
console.log(error + " - Error in function");
if (callback) { callback(error); }
});
}