NodeJS – callback不执行

在这种情况下,我执行一个函数(getAvailableLabs)之后 – 我想执行callback或承诺。 我不知道我应该执行哪一个,但是我不能得到任何工作。

路线:

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; }); } 

在上述情况下,它logging“可用实验室的结束”,后面跟着“这是事后响应”。 这就是我期待的callback理解。 然而,它永远不会执行“我们在这里!” 我不明白为什么? 我的印象是,如果我把一个函数放在一个函数中 – 它将作为一个callback执行,但是这不会发生。 我需要返回一个特定的方式来执行callback?

感谢您的帮助。

您的getAvailableLabs函数不接受callback参数。 我认为最好保持一致并使用承诺:

 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!"); }); 

如果你想使用callback,而不是承诺这里是我怎么写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); } }); } 

调用这个函数:

 getAvailableLabs((err, data) => console.log("We made it here!");