首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有承诺的Koa.js请求挂起

带有承诺的Koa.js请求挂起
EN

Stack Overflow用户
提问于 2014-12-23 05:56:30
回答 1查看 983关注 0票数 0

所以,我到处乱搞Koa.js和生成器,只是为了演示而把一个简单的站点拼凑在一起。我使用sqlite与node-sqlite3和Q作为承诺。这是我的db代码:

代码语言:javascript
复制
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的"promisify“对数据库的调用。然后,在我的考拉路线上,我有一个:

代码语言:javascript
复制
app.get('/logs', function *(){
    var logs = yield db.getLogs();
    yield this.render('logs', {logs: logs});
});

我遇到的问题是,请求只是挂起,浏览器永远得不到响应。真正奇怪的是,如果我将一个console.log语句放在yield db.getLogs()之后,我就可以看到来自db的结果。在那里的观点是,一切似乎都应该工作,但它根本没有。任何帮助,我会非常感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-23 06:27:24

好吧,在经历了很多挫折之后,我发现无论是Q还是蓝知更鸟,我都有这个问题。我一转向本土的承诺,它就顺利地发挥了作用。我得多挖些东西才能弄清楚到底是怎么回事,但我会把这个留在这里,以防将来有人碰到这个。另外,如果有人好奇的话,我使用的是节点0.11.13和q版本:1.1.2

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27614882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档