我有以下代码
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()
来调用登录,但我可以调用其回调的返回值吗?
答案 0 :(得分: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
}
就异步函数返回事物而言,这是一个不错的选择。