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!");
- node.js – post响应不等待callback完成
- 了解function(错误,数据)callback
- 将node-mysql结果行组合成node.js的单个JSON返回值
- 在nodejs中callback地狱?
- 如何正确使用Promise.all()和然后()与asynchronous函数?
- node.js嵌套async.eachSeries
- 在执行callback时,在Node.js中打破Q承诺?
- 为什么我需要在node.js中写回“function(value){return my_function(value);}”作为callback?
- 节点js原型对象'self'var不存储正确的callback上下文