使用高德地图的地址解析函数,return results
总是比results
的赋值先执行怎么办?
当然了,你上面的getAddress
的结果是在回调函数里的,当它执行完了才会走到geocoder_Callback
,你在geocoder
函数加个callback
参数,然后再用callback(results)
把数据传回去
因为js是异步的,results的赋值执行的时间比return results执行的时间长呢,因为异步的缘故,所以js不会等待每条语句执行完才会执行下一条语句,所以执行到return results的时候results的赋值还没执行完呢
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
这是异步调用,一般通过回调函数或者 Promise 来解决。
geocoder_Callback()
就是一个回调,在异步调用getAddress
得到结果之后执行。但是你应该直接在geocoder_Callback()
里进行取得 results 之后的操作而不是返回出来。使用 Promise 的方法需要引入 Promise 库(如果你不是使用 es6 的话)基本思路如下: