javascript - js如何获得onclick绑定的函数的返回值以及Ajax调用后的返回值?
迷茫
迷茫 2017-04-10 17:55:32
[JavaScript讨论组]

主要问题有两个:
1、通过get调用Ajax得到的值returnData如何返回给foo( )?
2、在onclick执行后如何将返回值returnData赋给最外层的returnData
//把我遇到的问题简化抽象出来是这样的:

(function(){
    var returnData;
    for(var i=0; i<length; i++){
        element.onclick = helper(i);
    }

    function helper(i){
        return function(){
            returnData = foo(i);
        } 
    }

    function foo(x){
        var returnData;
        //get函数是Ajax get方法的封装
        get(url, {}, function(text){
            returnData = text + x;
        });
        return returnData;
    }
})();
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(1)
巴扎黑

只回答第一个: 无解,你的打开方式不对。

看来你还是再用同步的思维在思考问题,但说到ajax,就不得不切换到异步的思维。

是否想过: ajax为什么要使用回调函数?

因为网络是有时延的,等待请求意味着阻塞,这可不行。因此ajax调用后函数就立即返回。但这样一来数据就取不到了——因为你不知什么时候数据会来。既然不能主动拿到数据,我们可以换一种方法,即将处理数据的操作传入——这便是回调。

作为返回值返回,这是同步操作才有的特性,在此做不到。

解决方案:

  • 使用回调

  • 使用 Promise

  • 尝鲜 ES 7 新特性 async

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

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