所有请求完成后,如何执行多个Firebase请求并接收回调?

SM7*_*M79 3 javascript firebase babeljs

我希望并行执行这三个Firebase请求,并在所有请求完成后接收回调.我以为我可以使用等待*,但似乎Babel不支持它.我并不担心数据的一致性,因为我正在编写/更新不同的firebase数据节点.

我正在使用巴贝尔.

await* Promise.all([
  firebaseRef1.push(data1),
  firebaseRef2.push(data2),
  firebaseRef3.push(data3)
]);
// all three are finished
Run Code Online (Sandbox Code Playgroud)

最初是这样的:

const [first, second, third] = await* Promise.all([
  firebaseRef1.push(data1),
  firebaseRef2.push(data2),
  firebaseRef3.push(data3)
]);
// all three are finished
Run Code Online (Sandbox Code Playgroud)

Ani*_*sur 5

push() 不会返回承诺,因此您必须使用它的回调来解决或拒绝您自己的承诺.

const allPushes = Promise.all([
  new Promise((resolve, reject) => {
    firebaseRef1.push(data1, error => {
      error ? reject(error) : resolve();
    });
  }),
  new Promise((resolve, reject) => {
    firebaseRef2.push(data2, error => {
      error ? reject(error) : resolve();
    });
  }),
  new Promise((resolve, reject) => {
    firebaseRef3.push(data3, error => {
      error ? reject(error) : resolve();
    });
  })
]);

allPushes.then(() => {
  // all three are finished
}, error => {
  // A push failed
});
Run Code Online (Sandbox Code Playgroud)