格式化回调函数的返回值

时间:2014-02-04 06:56:24

标签: javascript google-maps google-maps-api-3 callback

我正在使用谷歌地图v3创建一个简单的库。这个概念是将谷歌地图的每个功能划分为模块化功能,例如,调用地理定位将仅返回坐标,以便此坐标可用于显示地图,或解码为地址字符串,或作为标记位置。 Google Maps是异步的,为了实现这些“模块化”,每个函数都必须具有将值返回到回调块的回调。

我在下面使用一个简单的例子:

//simple functions
function set(callback) {
    var test = 'a String';
    callback(test);    
}
function print(val) {
    alert(val);   
}

//run

set(function(){
    print(arguments[0]); 
    //will be followed by another function, dll
});

如您所见,在回调块中,我可以通过访问arguments变量来检索返回的值。是的,尽管它有效,但它看起来并不具备信息。我想要实现的是如何将arguments重命名为信息性,例如lonlat等。所以我不必访问参数[0]表示x,参数[1]表示y,它与函数不同。

我的期望是,使用上面的示例,是否可以调用print(test)而不是print(arguments[0])?我希望在callback(//here//)内使用精确的变量值和名称,而不在它之前创建任何全局变量。

提前致谢

1 个答案:

答案 0 :(得分:2)

你不能使用你在set内给出局部变量的名称,但你可以在你将传递给 set的函数中命名:

set(function(test){
    print(test); 
    //will be followed by another function, dll
});

...这可能更有用,因为你将它命名为你要使用它的地方。