如何一个接一个地执行三个异步函数

时间:2018-06-20 08:59:00

标签: javascript asynchronous functional-programming

我很抱歉是否已被要求,但我已经在互联网上进行了搜索,但没有任何效果 我正在使用Firestore和javascript 到目前为止,我已经尝试过此方法了

var App

  function A (){

    firebase.database().ref('Info/').once('value').then(function(snapshot){
      var Ipz = (snapshot.val() && snapshot.val().Iplist) || 'Anonymous';
      console.log(Ipz)
     })

    console.log('A')
   }


   function B (){
    console.log('B')
   }


      App = Promise.resolve();

      App = App.then(A).then(B);

      App.then(() => {
      console.log("All done");
        })

我的输出:-

A
B
All done
JdGJtwEe8rb394BlX4IkjUfH4Wv1;JdGJtwEe8rb394BlX4IkjUfH4Wv1;

我想要此输出

JdGJtwEe8rb394BlX4IkjUfH4Wv1;JdGJtwEe8rb394BlX4IkjUfH4Wv1;
A
B
All done

1 个答案:

答案 0 :(得分:3)

您需要使用A将异步数据库函数与Ball done.then函数链接在一起,以连接每个数据库:

function lookup() {
  return firebase.database().ref('Info/').once('value')
    .then(function(snapshot) {
      var Ipz = (snapshot.val() && snapshot.val().Iplist) || 'Anonymous';
      console.log(Ipz)
      // if you want to pass Ipz to `A` as a parameter, then `return Ipz;` here
    });
}
function A() {
  console.log('A');
}
function B() {
  console.log('B');
}
lookup()
  .then(A)
  .then(B)
  .then(() => console.log("All done"));