node.js - nodejs redis Q promises,如何让它发挥作用?

标签 node.js redis promise q

我正在尝试从 Redis 获取一些值,将它们组合起来并最终发送。但我就是无法兑现这些 promise 。

这是来自redis的简单get函数

client.get('user:1:id',function(err,data){
    // here I have data which contains user ID
});
client.get('user:1:username',function(err,data){
    // here I have data which contains username
});

现在我想获取 IDusername 并发送它们,但我不知道如何实现。我设法让它与回调一起工作,但结果非常困惑,所以我尝试将匿名函数包装到 Q.fcall 并在调用 .then 之后看起来像那个

client.get('user:1:id',Q.fcall(function(err,data){
    return data;
}).then(function(val) {
   // do something
}));

但是由于传递了太多参数,这给了我错误,我什至不确定这是否对我有帮助,即使它会起作用。

最佳答案

Q.all([Q.ninvoke(client, 'get', 'user:1:id'),
       Q.ninvoke(client, 'get', 'user:1:username')]).then(function (data) {
  var id = data[0];
  var username = data[1];
  // do something with them
});

参见 https://github.com/kriskowal/q#adapting-node

关于node.js - nodejs redis Q promises,如何让它发挥作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13390075/

相关文章:

javascript - Node.js Promise 未按顺序执行

android - 从 Android 设备将数据流式传输到网站

Angular 结合 2 个 promise 到 1 个 promise

sql - 数据设置为 json with group

database - 使用遗留数据库、新数据库和 Redis 缓存层的新 node.js 应用程序

redis - 无法运行传递给 Redis 的 Lua 脚本 : This Redis command is not allowed from scripts

ruby-on-rails - 在 redis 中存储(唯一)键值数组

javascript - .then()方法返回的promise中 promise 了什么?

javascript - 通过 AJAX 渲染 View

mysql - 如何修复 Sequelize 嵌套包含不使用限制/顺序/属性?