Bluebird Promise可以与node.js中的redis一起使用吗?

红巨人

这是我的原始代码,用于获取存储在redis中的用户php会话:

var session_obj;
var key = socket.request.headers.cookie.session

session.get('PHPREDIS_SESSION:'+key,function(err,data){

      if( err ) 
      { 
         return console.error(err);
      }
      if ( !data === false)
      { 
        session_obj = PHPUnserialize.unserializeSession(data);
      }
      /* ... other functions ... */
})

我想用Promise重写代码,但无法获得data返回的代码:

Promise.resolve(session.get('PHPREDIS_SESSION:'+key)).then(function(data){

   return data;

}).then(function(session){  

   console.log(session); // this returns true, but not the session data

   session_obj = PHPUnserialize.unserializeSession(session);

}).catch(function(err){

   console.log(err);
})

session返回的只是布尔true而不是会话数据。原始redis get函数有两个参数。我以为诺言刚刚返回err了原始的第一个参数所以我尝试了

  Promise.resolve(session.get('PHPREDIS_SESSION:'+key)).then(function(err,data){
     console.log(data) // return undefined
  })

但它也不起作用。

有人知道redis是否可以与Promise合作吗?

滞后反射

您尝试使用Promise.resolve错误,它期望Promise,并且session.get默认情况下不会返回Promise。您首先需要使它散布(或promisifyAll

session.getAsync = Promise.promisify(session.get);
// OR
Promise.promisifyAll(session); //=> `session.getAsync` automatically created
// OR
Promise.promisifyAll(redis); //=> Recursively promisify all functions on entire redis

然后使用新函数返回承诺,就像使用承诺一样,您甚至不需要用Promise.resolve包装它,只需:

session.get('PHPREDIS_SESSION:' + key).
then(function(data) {
    // do something with data
}).
catch(function(err) {
    // handle error with err
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node.js,Redis和For Loop与Bluebird承诺在一起吗?

来自分类Dev

使用Bluebird在Promise中包装Node.js回调

来自分类Dev

使用Bluebird Promise承诺gcloud

来自分类Dev

从Node.js中的Promise(Bluebird)返回值

来自分类Dev

寻找针对node.js的Promise Bluebird代码审查

来自分类Dev

Node.js | Bluebird Promise 不会异步执行任务

来自分类Dev

现在要在Asana Node库中使用Bluebird Promise?

来自分类Dev

使用bluebird的Node-redis混杂

来自分类Dev

如何使用bluebird将原始数据与Promise.map的响应一起传递?

来自分类Dev

Bluebird Promise.any()早期拒绝吗?

来自分类Dev

在Bluebird Promise中执行异步操作

来自分类Dev

在 bluebird 中,同时执行多个 promise 数组

来自分类Dev

使用Bluebird Promise创建节流功能

来自分类Dev

使用Bluebird将Cordova插件变成Promise

来自分类Dev

使用Bluebird将Cordova插件变成Promise

来自分类Dev

使用Bluebird Promise创建节流功能

来自分类Dev

使用Bluebird / NodeJS Promise交换参数“ then”的顺序

来自分类Dev

了解承诺(使用Bluebird和Node)

来自分类Dev

在node.js bluebird中,当“ request / ajax”响应为“成功”时,解决或拒绝promise

来自分类Dev

在数组中将BlueBird Promise同步链接在一起

来自分类Dev

如何将ES6箭头功能与Promise绑定一起使用(bluebird)

来自分类Dev

我可以对Bluebird.js做出“懒惰”承诺吗?

来自分类Dev

Promise / bluebird.js中的错误处理

来自分类Dev

Promise / bluebird.js中的错误处理

来自分类Dev

如何在promise链中返回promise.map(bluebird)?

来自分类Dev

Node和异步api调用中的Bluebird.js

来自分类Dev

Node js:猫鼬中间件中的Bluebird Promisify

来自分类Dev

Promise.all中的罐头(ES6和Bluebird)

来自分类Dev

在Bluebird Promise链中传递上下文的问题

Related 相关文章

  1. 1

    Node.js,Redis和For Loop与Bluebird承诺在一起吗?

  2. 2

    使用Bluebird在Promise中包装Node.js回调

  3. 3

    使用Bluebird Promise承诺gcloud

  4. 4

    从Node.js中的Promise(Bluebird)返回值

  5. 5

    寻找针对node.js的Promise Bluebird代码审查

  6. 6

    Node.js | Bluebird Promise 不会异步执行任务

  7. 7

    现在要在Asana Node库中使用Bluebird Promise?

  8. 8

    使用bluebird的Node-redis混杂

  9. 9

    如何使用bluebird将原始数据与Promise.map的响应一起传递?

  10. 10

    Bluebird Promise.any()早期拒绝吗?

  11. 11

    在Bluebird Promise中执行异步操作

  12. 12

    在 bluebird 中,同时执行多个 promise 数组

  13. 13

    使用Bluebird Promise创建节流功能

  14. 14

    使用Bluebird将Cordova插件变成Promise

  15. 15

    使用Bluebird将Cordova插件变成Promise

  16. 16

    使用Bluebird Promise创建节流功能

  17. 17

    使用Bluebird / NodeJS Promise交换参数“ then”的顺序

  18. 18

    了解承诺(使用Bluebird和Node)

  19. 19

    在node.js bluebird中,当“ request / ajax”响应为“成功”时,解决或拒绝promise

  20. 20

    在数组中将BlueBird Promise同步链接在一起

  21. 21

    如何将ES6箭头功能与Promise绑定一起使用(bluebird)

  22. 22

    我可以对Bluebird.js做出“懒惰”承诺吗?

  23. 23

    Promise / bluebird.js中的错误处理

  24. 24

    Promise / bluebird.js中的错误处理

  25. 25

    如何在promise链中返回promise.map(bluebird)?

  26. 26

    Node和异步api调用中的Bluebird.js

  27. 27

    Node js:猫鼬中间件中的Bluebird Promisify

  28. 28

    Promise.all中的罐头(ES6和Bluebird)

  29. 29

    在Bluebird Promise链中传递上下文的问题

热门标签

归档