下面是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();
答案 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();