尝试使用带有参数的闭包作为回调
trying to use a closure with parameters as a callback
我有一个从方法调用的库函数。它需要一个参数的回调,我想成为来自同一对象的另一个方法。 我似乎无法正确理解语法。 这是我得到的:
myOriginalObject.login = function() {
// inside a method
var obj = this;
var closure = function(token) { return function() { obj._login2(token); } }
$window.gapi.auth.authorize({"client_id": this.clientId,
"immediate":false,
"response_type":"token",
"scope":this.scopes}, closure );
// .. some more code and method ends
}
myOriginalObject._login2 = function(authResult)
{
// .. I can't get this function called by the gapi library
}
附言抱歉,如果这篇文章没有正确完成(仍在学习),谢谢!!
您正在将对closure
函数的引用传递给authorize
,但我认为您想调用它并将引用传递给它创建的函数。所以:
// `token` argument here ------------------v
var closure = function() { return function(token) { obj._login2(token); } }
// not here------------^
和
$window.gapi.auth.authorize({"client_id": this.clientId,
"immediate":false,
"response_type":"token",
"scope":this.scopes}, closure() );
// Call it -----------------------------------------------^^
您可能根本不需要 closure
函数,但如果不了解周围的代码,就很难分辨。但这很可能是你所需要的:
$window.gapi.auth.authorize({"client_id": this.clientId,
"immediate":false,
"response_type":"token",
"scope":this.scopes}, function(token) {
obj._login2(token);
});
旁注:由于myOriginalObject
是单例,因此不需要var obj = this;
,您可以直接使用符号myOriginalObject
:
$window.gapi.auth.authorize({"client_id": this.clientId,
"immediate":false,
"response_type":"token",
"scope":this.scopes}, function(token) {
myOriginalObject._login2(token);
});
这一行:
var closure = function(token) { return function() { obj._login2(token); } }
将返回一个函数,即 closure() 的返回值是一个函数。
一个解决方案:
改变
var closure = function(token) { return function() { obj._login2(token); } }
自
var closure = function(token) { obj._login2(token); }
相关文章:
- javascript,将参数传递给函数内部的闭包中的回调
- JavaScript闭包&回调函数
- 使用闭包/函数绑定将自函数作为回调传递
- 使用JavaScript回调函数了解变量作用域和闭包
- 带有 Javascript 回调的闭包
- 非常基本的JavaScript回调/闭包结构
- 闭包的意外行为:回调保存最后一个值
- 尝试使用带有参数的闭包作为回调
- 对闭包变量的更改是否在使用闭包的回调中可见
- 创建带有回调的动态 JSON 数组(内部闭包问题)
- Is回调函数始终是一个闭包
- Javascript闭包:Phonegap和'这'在回调中
- 参数对应关系:回调与闭包(?)
- 回调中的闭包
- 我需要在DOM事件回调中使用闭包吗
- 使用Google闭包编译器记录回调参数
- 作为闭包的回调中的Javascript变量作用域
- JS闭包——依赖回调的多个日期选择器初始化/调用
- 闭包回调中参数的作用域
- 循环中的闭包/回调