gpt4 book ai didi

javascript - NodeJS - 回调未执行

转载 作者:行者123 更新时间:2023-11-30 08:26:06 26 4
gpt4 key购买 nike

在这种情况下,在我执行函数 (getAvailableLabs) 之后 - 我想执行回调或 promise 。我不确定我应该执行哪个,但是我无法使任何一个工作。

路线:

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

在上述情况下,它会记录“可用实验室结束”,然后是“这是回复后”。这就是我对回调的理解所期望的。但是它从不执行“我们在这里成功了!”我不明白为什么?我的印象是,如果我在函数中放置一个函数——它将作为回调执行,但这不会发生。我需要返回一个特定的方式来执行回调吗?

感谢您的帮助。

最佳答案

您的 getAvailableLabs 函数不接受回调参数。我认为最好保持一致并使用 promise :

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

如果您想使用回调而不是 promise ,我会这样写 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!");

关于javascript - NodeJS - 回调未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45403876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com