我刚开始使用NodeJS进行编码,而且我有一个问题。我被困在这个地方。我知道NodeJS是异步的,但每当我做一个' GET' /我得到一个空白的回复。
/* GET home page. */
router.get('/', function(req, res, next) {
var tenantID = 1; //Hardcoded TODO: Remove this value later
var dwelltest = dwellTimeBucketModel.fetchFromDB(tenantID);
//I have a model in which I do all the DB calls (Cleaner to seperate?)
res.json({dwell: dwelltest}); //Send response back
}
现在,每次我这样做,我的回复都会被发送出去。 (我知道这是由于异步行为)。我不确定如何让它工作?
我试过这样做:
var dwellResult = new Promise(function(resolve, reject){
dwellTimeBucketModel.fetchFromDB(tenantID);
});
dwellResult.then(function (result) {
console.log(result);
res.json({dwell: result})
}).catch(function (error) {
console.error(error);
})
但是回复从未发送过。我不确定我做错了什么?
请告知我是否遵循了正确的做法? (或标准?)
由于
答案 0 :(得分:3)
将决心添加到承诺
var dwellResult = new Promise(function(resolve, reject){
resolve(dwellTimeBucketModel.fetchFromDB(tenantID));
});
答案 1 :(得分:1)
如果你看一下promise语法,那就是 -
var p = new Promise(function(resolve, reject) {
// Do an async task async task and then...
if(/* good condition */) {
resolve('Success!');
}
else {
reject('Failure!');
}
});
p.then(function(response) {
/* do something with the result */
}).catch(function() {
/* error :( */
})
以下是两篇更详细的研究文章。