【发布时间】:2016-04-07 16:42:12
【问题描述】:
我有以下 nodeJS 代码。我需要从 redis 数据库中获取每个服务的机器。我正在使用“q”库来简化回调问题。但是我没有得到输出。
我是 node/callbacks/q 的新手。我在代码中的错误在哪里?
我有一个带有以下代码的 controller.js 文件
function getMachines(services) {
var machines = Q.fcall(function() {});
services.forEach(function(service) {
var value = function() {
var deferred = Q.defer();
redisDB.readfromRedis(service, function(result) {
deferred.resolve(result);
});
return deferred.promise;
}
});
return machines;
}
testController.js(从controller.js调用getMachines函数)
var services = ['dashDb22', 'service1', 'service2', 'service3']
var output = controller.getMachines(services)
console.log(output);
RedisDb.js
function readfromRedis(key, callback) {
client.smembers(key, function(error, value) {
if (error) {
throw error;
}
console.log('VALUE IS: = ' + value);
callback(value);
});
}
【问题讨论】:
-
您创建了一个
value函数,但没有调用它。
标签: javascript node.js asynchronous promise q