0

我有以下代码

var foo = new Bar(function(callback){
    return callback  //async, use $q in angularjs
});

new Bar()有它的属性和回调。比方说,属性foo.pro()也调用它,但我怎样才能调用foo返回回调值?

更新 Bar() 在这里实际上是 firebase 身份验证对象代码

new FirebaseAuthClient(url, function(error, user){
  if (user) {
   console.log(user)  //if user logged in
  } else if(error) {
   console.log(error) //if login fail
  } else {
   console.log('user not login') //user not login
  }
});

所以在这里,FirebaseAuthClient 也有属性 FirebaseAuthClient.login() 和 .logout()

我认为这与firebase无关,而是与javascript有关,所以我跳过了代码。回到我的问题,我怎样才能返回回调的值?

如果我将 var 设置为 foo 我可以foo.login()用来调用 login 但我可以调用其回调的返回值吗?

4

1 回答 1

0

所以问题是如何返回传递给异步函数回调的东西。要走的路是不返回任何东西,而是在回调函数中处理信息:

function Bar(callback) {
       //some code
       var xy = 1;
       callback(xy);    
}


var foo = new Bar(function (arg) {
       doSomething(arg);    
});


function soSomething(arg) {
    //...
}

现在假设您想要一个全局变量,并且您想要将回调函数的参数分配给它。在这种情况下,您可以在内部执行该分配doSomething并触发使用全局变量的函数:

var myVar;

function Bar(callback) {
       //some code
       var xy = 1;
       callback(xy);    
}


var foo = new Bar(function (arg) {
       doSomething(arg);    
});


function soSomething(arg) {
    myVar = arg;
    goOn();
}

function goOn() {
    //do something with myVar
}

就从异步函数返回事物而言,这是 afaik 。

于 2013-05-30T09:06:39.847 回答