如何从node_redis函数返回结果值

时间:2017-05-16 08:53:17

标签: node.js redis

我需要从此功能返回回复并使用其他功能中的回复。我是NodeJs的新手并试图找出一个简单的解决方案。

    var getKeys = function(key){
      var addkey = key + '*'
      myClient.keys(addkey, function (err, replies) {
        console.log(replies);
      });
    }

问题2:

有没有办法在node_redis函数中获取变量?

实施例: redis_get - >定义获取值的函数

thingsUUID[i] = thingsUUIDKey[i].split("_").pop()
      redis_get("key", function(redis_items) {
        console.log(thingsUUID[i]);
});

在redis_get内部,thingUUID未定义。我想连接thingsUUID和结果redis_items

3 个答案:

答案 0 :(得分:2)

您可以将myClient.keys函数中使用的回调添加到getKeys函数中,如下所示:

var getKeys = function(key, callback){
    var addkey = key + '*'
    myClient.keys(addkey, callback);
}

getKeys("EXAMPLE_KEY",  function (err, replies) {

    if (err) console.error(err);

    console.log(replies);
});

由于myClient.keys需要回调,因此它是异步的,您无法将此响应返回到值中。

这是一个很好的资源,可以概述回调的工作原理: https://github.com/maxogden/art-of-node#callbacks

答案 1 :(得分:0)

我不太确定您想要做什么,但如果您的变量thinksUUIDredis_get之外定义,则应该可以在回调中访问它:



var thinksUUID = [1,2,3,4];

var getKeys = function(key, callback){
    var addkey = key + '*'
     myClient.keys(addkey, callback);
}

getKeys("EXAMPLE_KEY",  function (err, replies) {

    if (err) console.error(err);

    replies.forEach(function(item, index){
        console.log(item);
        console.log(thinksUUID[index]);
    });
});




如果您想将变量thinksUUID移交给定义的函数redis_get,则需要将redis_get(key, callback)的签名更改为redis_get(key, thinksUUID, callback)

答案 2 :(得分:0)

function myfunction3() {
    let explain2 = "yes";
     return explain2;
}

function myfunction4(explain2) {
    if ( explain2 == "yes") {
         console.log('yes');
    }
}

let explain2 = myfunction3();
myfunction4(explain2);