node.js - 为什么这个简单的 node.js 代码会卡住?

标签 node.js asynchronous redis express

下面是示例 node.js 代码的扩展:

var express = require('express');
var application = express.createServer();

var redis = require("redis"),
    client = redis.createClient();

client.on("error", function (err) {
    console.log("Error " + err);
});

client.set("test key", "TEST KEY VALUE", redis.print);

application.get('/', function(request, response) {
        client.get('test key', function(err, value) {
            client.quit();
            response.send('The value of "test key" is: ' + value);
        });
});

application.listen(2455);

服务器启动正常,但在访问时,页面加载了一段时间,最终出错——“没有收到数据。”

我有 redis 正在运行, key 保存良好,我也可以通过 Node 的 repl 中的 client.get() 访问它们。

我想我缺少一些关于异步程序如何工作的理论。

最佳答案

我不认为 Redis/redis 库要求您显式终止客户端连接。即使这样做,您也需要确保在退出客户端之前调用并处理了成功或错误的回调。

希望对您有所帮助。

关于node.js - 为什么这个简单的 node.js 代码会卡住?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11478628/

相关文章:

node.js - 在 Hero Card 机器人框架中提及用户 (node js)

javascript - 如何将请求与异步模块一起使用

javascript - 具有最大并发性的异步并发队列

spring - 将 SSL 与 Redis 和 Spring Data Redis 一起使用时为 "Cannot get Jedis connection"

erlang - 如何让 Webmachine 和 eredis 一起工作?

Spring Sessions HttpSession无法完全替代JSESSIONID

javascript - React defaultValue 不工作 axios 传递动态数据

node.js - 在 Jenkins 管道上缓存 NPM 依赖项

javascript - 调用异步函数时如何给数组赋值?

node.js - 同步 Jake Node.js 任务