如何重构Firebase承诺返回另一个(.then)但在函数范围之外?

时间:2018-02-24 20:02:36

标签: node.js firebase es6-promise

这是我到目前为止的代码:

这是承诺1:

const promise1 = () => new Promise((resolve) => {

console.log("1");
resolve(["hi", "world"]);

})

这是承诺2:

const promise2 = (data) => {

console.log("2");

ref.ref("server/events").once("value").then(function (snapshot) {


  console.log(inside firebase ref');

      return Promise.resolve("test");
  }
 })
 }

这是承诺3:

const promise3 = (value) => {
console.log(" 3 ");
console.log(value)

}

并致电其中3人:

 promise1()
.then((value) => promise2(value))
.then((value) => promise3(value));

输出是:

  

1

     

2

     

3

     

未定义

     

在firebase ref

1 个答案:

答案 0 :(得分:1)

你的问题不是很清楚,但我认为你不满意promise3注销一个undefined而不是你希望从promise2返回的值。并且firebase回调似乎发生了故障。

问题是,你永远不会从promise2函数返回一个promise,所以:

ref.ref("server/events").once("value").then(function (snapshot) {...

需要

return ref.ref("server/events").once("value").then(function (snapshot) {...

专业提示,您可以在"免费点"中调用该承诺链。时尚:

promise1()
.then(promise2)
.then(promise3);