node.js - node.js 中的 Redis 异步/等待问题

标签 node.js redis async-await

方法 asyncBlock 正在正确执行。

但是(其他两种方法)当它被分成 2 种方法时,它的重新调整 promise 而不是实际值。

https://runkit.com/sedhuait/5af7bc4eebb12c00128f718e

const asyncRedis = require("async-redis");
const myCache = asyncRedis.createClient();

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

const asyncBlock = async() => {
    await myCache.set("k1", "val1");
    const value = await myCache.get("k1");
    console.log("val2",value);

};
var setValue = async(key, value) => {
    await myCache.set(key, value);
};

var getValue = async(key) => {
    let val = await myCache.get(key);
    return val;
};
asyncBlock(); //  working 
setValue("aa", "bb"); // but this isn't 
console.log("val", getValue("aa"));//but this isn't 

输出

val Promise { <pending> }
val2 val1

最佳答案

异步函数返回一个 promise,因此您在其中以同步方式执行操作,但您仍然以异步方式使用它。

var setValue = async(key, value) => {
  return await myCache.set(key, value);
};

var getValue = async(key) => {
  let val = await myCache.get(key);
  return val;
};

async function operations() {

  console.log(await setValue("aa", "bb"));
  console.log("val", await getValue("aa"));

}

operations();

关于node.js - node.js 中的 Redis 异步/等待问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50312759/

相关文章:

azure - 如何在 azure kubernetes 上的 vnet 中配置 Azure redis 缓存?

.net-4.0 - Microsoft.Bcl.Async 在 Windows XP 中不起作用

c# - ASP.NET 4.6 异步 Controller 方法在等待后丢失 HttpContext.Current

node.js - 错误或规范更改(Twitter API 1.1 的)

ruby - Resque 工作在错误队列上的工作人员

redis - 给出 Redis 中特定位置的所有条目

c# .net 4.5 async await Task.Wait() 阻塞问题

php - 两台服务器访问同一个数据库

node.js - 为什么添加为事件桥规则目标的 Lambda 函数未触发?

javascript - 从 API 获取数据时的客户端与服务器端