使用高德地图的地址解析函数,return results
总是比results
的赋值先执行怎么办?
因为js是异步的,results的赋值执行的时间比return results执行的时间长呢,因为异步的缘故,所以js不会等待每条语句执行完才会执行下一条语句,所以执行到return results的时候results的赋值还没执行完呢
当然了,你上面的getAddress
的结果是在回调函数里的,当它执行完了才会走到geocoder_Callback
,你在geocoder
函数加个callback
参数,然后再用callback(results)
把数据传回去
这是异步调用,一般通过回调函数或者 Promise 来解决。
geocoder_Callback()
就是一个回调,在异步调用 getAddress
得到结果之后执行。但是你应该直接在 geocoder_Callback()
里进行取得 results 之后的操作而不是返回出来。
使用 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
});