如何从较旧的电话访问属性?

时间:2016-08-31 10:14:54

标签: javascript node.js promise

我曾经像这样编码,最终发现自己陷入了回调地狱。

 Redis.get("boo", (res1) => {
      Redis.get(res1, (res2) => {
          console.log(res1);
          console.log(res2);
      });
 });

然而,当我这样做的时候:

Redis.getAsync("boo)
.then(res1 => {
    return Redis.getAsync(res1);
})
.then(res2 => {
    console.log(res1) // undefined
});

我再也无法访问res1了。每次返回时传递参数都很脏。

这个问题有什么优雅的解决方案吗?

2 个答案:

答案 0 :(得分:1)

Redis.getAsync("boo")
.then(res1 => {
    return Redis.getAsync(res1).then(res2 => ({res1, res2}));
})
.then(({res1, res2}) => {
    console.log(res1, res2);
});

答案 1 :(得分:0)

这是官方支持但是......

如果您喜欢冒险并乐于使用babel,请使用aync / await

async function foo() {
  const res1 = await Redis.getAsync("boo")
  const res2 = await Redis.getAsync(res1)
}