Javascript函数返回值问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Javascript函数返回值问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1457字,纯文字阅读大概需要3分钟。
内容图文
![Javascript函数返回值问题](/upload/InfoBanner/zyjiaocheng/747/c1a67bcd733846af9f5f9a97c895cb2b.jpg)
我正在尝试使用谷歌地图API并遇到一些麻烦.我创建了一个名为getPoint的函数,它接受一个地址.它使用google api将该地址转换为GPoint对象,使用GClientGeocoder.getLatLng(地址,回调)函数. getLatLng()传递地址和回调函数,如下所示.我希望我编写的getPoint()函数返回从getLatLng()调用传递给回调函数的“point”变量.我正在努力弄清楚如何做到这一点,甚至可以做到这一点?
function getPoint(address) {
var geocoder = new GClientGeocoder();
return geocoder.getLatLng(
address,
function(point){
return point;
}
);
}
在此先感谢您的帮助!
解决方法:
GClientGeocoder.getLatLng是一个异步操作,因此你不能在getPoint中有一个return语句实际上做你期望的.
您必须重构代码以获取回调函数,在异步操作完成时调用该函数:
function getPoint(address, callback) {
var geocoder = new GClientGeocoder();
geocoder.getLatLng(
address,
function(point){
/* asynch operation complete.
* Call the callback with the results */
callback(point)
}
);
}
甚至更好(虽然触摸更深奥):
function getPoint(address, callback) {
var geocoder = new GClientGeocoder();
geocoder.getLatLng(
address,
callback // GClientGeocoder will call the callback for you
);
}
编辑您的评论问题:
好的,这是另一个问题,但简而言之,只要您在定义了映射实例的同一范围内定义函数,您传递的JavaScript函数回调就可以访问您的映射实例:
var map = new GMap2(/*...*/);
var addresses = []; // list of address strings
for(var i=0; i < addresses.length; i++) {
getPoint(addresses[i], function(point) { // pass the callback function
map.addOverlay(/*...*/); // map variable is in scope
})
}
这种函数称为闭包.
内容总结
以上是互联网集市为您收集整理的Javascript函数返回值问题全部内容,希望文章能够帮你解决Javascript函数返回值问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。