JavaScript函数返回Callback返回

时间:2018-07-02 03:14:06

标签: javascript node.js

下面是Nodejs代码。 函数callback()返回“伦敦”。 如何强制函数getdata()返回“伦敦”?我确实引用了 this 链接,但无法正常工作。

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

client.set("string key", "London");

function getdata() {
    client.get("string key", callback);
};

function callback(err, data) {
    console.log(data)
    return data;
};

console.log(getdata());

client.quit();

1 个答案:

答案 0 :(得分:1)

get的redis方法是异步的。此方法的第二个参数是回调,一旦遇到错误或找到值,就会调用该回调。在同步方法内不可能从异步调用返回

如果您想通过该get Redis方法返回值,则可以使用promise。请注意,使用此方法的客户必须等待对解决或拒绝的承诺。

以下解决方案描述了您在此处应如何承诺:

const {promisify} = require('util');
const redis = require("redis");
const client = redis.createClient();

const getAsync = promisify(client.get).bind(client);

client.set("string key", "London");

getAsync("string key").then((res) => {
    console.log(`Value = ${res}`);
}).catch((err) => {
    console.log(`Error = ${err}`);
});

client.quit();