我有以下代码
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有关,所以我跳过了代码。回到我的问题,我如何返回回调的值?
如果我设置一个变量为foo我可以使用foo.login()
调用登录,但我可以调用其回调的返回值吗?
问题是如何返回传递给异步函数回调的内容。方法是不返回任何东西,只处理回调函数中的信息:
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
}
对于异步函数的返回,这是一个错误。