繁体   English   中英

承诺的Koa.js请求已挂起

[英]Koa.js request with promises is hanging

因此,我搞砸了Koa.js和生成器,只是将它们放到一个简单的站点中以进行演示。 我正在使用带有node-sqlite3和Q的sqlite进行承诺。 这是我的数据库代码:

module.exports.getLogs = function(){
    var deferred = Q.defer();
    var results = [];
    db.serialize(function(){
        db.each("SELECT ipAddress, action, details, timestamp FROM logs", function(err, row) {
            results.push({
                ipAddress: row.ipAddress,
                action: row.action,
                details: row.action,
                timestamp: new Date(row.timestamp)
            });
        }, function(){
            deferred.resolve(results);
        });
    });

    return deferred.promise;
}

因此,基本上我只是Q.defer来“实现”对数据库的调用。 然后,在我的koa路线中,我有这个:

app.get('/logs', function *(){
    var logs = yield db.getLogs();
    yield this.render('logs', {logs: logs});
});

我遇到的问题是请求只是挂起,浏览器从未得到响应。 真正奇怪的是,如果我在yield db.getLogs()之后放置console.log语句,我会看到db的结果很好。 视图在那里,一切似乎都应该起作用,但事实并非如此。 任何帮助我将不胜感激!

好吧,经过无奈之后,事实证明,当我尝试使用Q或bluebird时,我遇到了这个问题。 当我切换到本地Promises时,它就如鱼得水。 我将不得不进一步研究以弄清楚到底发生了什么,但是我会把它留在这里,以防将来有人遇到这种情况。 另外,如果有人好奇,我使用的是节点0.11.13和q版本: 1.1.2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM