javascript - js里关于函数间return赋值的一个问题
高洛峰
高洛峰 2017-04-10 15:41:33
[JavaScript讨论组]

使用高德地图的地址解析函数,return results总是比results的赋值先执行怎么办?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
ringa_lee

这是异步调用,一般通过回调函数或者 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
});
怪我咯

当然了,你上面的getAddress的结果是在回调函数里的,当它执行完了才会走到geocoder_Callback,你在geocoder函数加个callback参数,然后再用callback(results)把数据传回去

黄舟

因为js是异步的,results的赋值执行的时间比return results执行的时间长呢,因为异步的缘故,所以js不会等待每条语句执行完才会执行下一条语句,所以执行到return results的时候results的赋值还没执行完呢

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号