扫码关注官方订阅号
使用高德地图的地址解析函数,return results总是比results的赋值先执行怎么办?
return results
results
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
这是异步调用,一般通过回调函数或者 Promise 来解决。
geocoder_Callback() 就是一个回调,在异步调用 getAddress 得到结果之后执行。但是你应该直接在 geocoder_Callback() 里进行取得 results 之后的操作而不是返回出来。
geocoder_Callback()
getAddress
使用 Promise 的方法需要引入 Promise 库(如果你不是使用 es6 的话)基本思路如下:
function handle() { var promise = Promise.create(); xxx.getAddress(data) { var results = geo_callback(data); promise.resolve(results); } return promise } // 使用结果 var p = handle() p.then(function(results) { // 这里处理得到的 results });
当然了,你上面的getAddress的结果是在回调函数里的,当它执行完了才会走到geocoder_Callback,你在geocoder函数加个callback参数,然后再用callback(results)把数据传回去
geocoder_Callback
geocoder
callback
callback(results)
因为js是异步的,results的赋值执行的时间比return results执行的时间长呢,因为异步的缘故,所以js不会等待每条语句执行完才会执行下一条语句,所以执行到return results的时候results的赋值还没执行完呢
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
这是异步调用,一般通过回调函数或者 Promise 来解决。
geocoder_Callback()就是一个回调,在异步调用getAddress得到结果之后执行。但是你应该直接在geocoder_Callback()里进行取得 results 之后的操作而不是返回出来。使用 Promise 的方法需要引入 Promise 库(如果你不是使用 es6 的话)基本思路如下:
当然了,你上面的
getAddress的结果是在回调函数里的,当它执行完了才会走到geocoder_Callback,你在geocoder函数加个callback参数,然后再用callback(results)把数据传回去因为js是异步的,results的赋值执行的时间比return results执行的时间长呢,因为异步的缘故,所以js不会等待每条语句执行完才会执行下一条语句,所以执行到return results的时候results的赋值还没执行完呢