Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试在AJAX调用中获得异步结果时出现问题_Javascript_Jquery_Ajax_Asynchronous_Promise - Fatal编程技术网

Javascript 尝试在AJAX调用中获得异步结果时出现问题

Javascript 尝试在AJAX调用中获得异步结果时出现问题,javascript,jquery,ajax,asynchronous,promise,Javascript,Jquery,Ajax,Asynchronous,Promise,我很难让它正常工作。我的问题是,我想在获得几个(可变数量)AJAX调用的值之后运行一个函数,这样我就可以处理这些调用了。当我将async设置为false时,调用会起作用,但这违背了AJAX的目的。我怎么可能只在返回结果时调用并返回所有值以运行函数?接下来是一个例子,说明我为什么要这么做(当然,在现实中,调用的数量和参数会有所不同) 文件 $(文档).ready(函数(){ stockholmUrl1=http://frontex.webdeveloper-tips.com/ba-simple-

我很难让它正常工作。我的问题是,我想在获得几个(可变数量)AJAX调用的值之后运行一个函数,这样我就可以处理这些调用了。当我将async设置为false时,调用会起作用,但这违背了AJAX的目的。我怎么可能只在返回结果时调用并返回所有值以运行函数?接下来是一个例子,说明我为什么要这么做(当然,在现实中,调用的数量和参数会有所不同)


文件
$(文档).ready(函数(){
stockholmUrl1=http://frontex.webdeveloper-tips.com/ba-simple-proxy.php?url=http%3A%2F%2Ffrontex.meteogroup.com%2Fcgi-bin%2Fmapserv%3Fmap%3D%2Fvar%2Fwww%2Fmapserver%2frontex%2frontex_marine.map%26时间%3D2015-11-28800%3A00%3A00.000Z%26服务%3DWMS%26版本%3D1.3.0%26请求%3dgetfeatureinfox%26BBOX%3D7.06283156498674103%2C-44.125%2C82.9371684350132652%2C45.125%26CRS%3Depsg%3A4326%26WIDTH%3D754%26HEIGHT%3D641%26层%3DAir\u Tempu area%26STYLES%3D%26格式%3Dimage%2BPNG%26查询层%3DAir\u Tempu area%26INFO\u格式%3DGEOSON%26I%3D598%26J%3D539';
函数mulJSON(url){
var requestUrl=url;
var时间;
var-arr=[];
var result=(函数(){

对于(var i=0;iYou应该在
then()
节中处理ajax结果。只在
when()
中调用。如下所示:
$。when($.get(url1),$.get(url2),$.get(url3),$.get(url4))。然后(function(){//here arguments变量将包含响应)
谢谢Gino,但不幸的是AJAX调用的数量是可变的,因此我无法添加类似于您向我展示的$.when($.get(url1),$.get(url2),$.get(url3),$.get(url4))的内容,因为$的参数会有所不同。when会有所不同,这就是为什么我尝试在一个名为mulJSON(url)的函数调用中将它们组合在一起的原因并处理.then部分中所有AJAX调用的结果。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
</head>
<body>  
<script>
$(document).ready(function() {

stockholmUrl1 = 'http://frontex.webdeveloper-tips.com/ba-simple-proxy.php?url=http%3A%2F%2Ffrontex.meteogroup.com%2Fcgi-bin%2Fmapserv%3Fmap%3D%2Fvar%2Fwww%2Fmapserver%2Ffrontex%2Ffrontex_marine.map%26TIME%3D2015-11-28T00%3A00%3A00.000Z%26SERVICE%3DWMS%26VERSION%3D1.3.0%26REQUEST%3DGetFeatureInfo%26BBOX%3D7.06283156498674103%2C-44.125%2C82.93716843501326252%2C45.125%26CRS%3Depsg%3A4326%26WIDTH%3D754%26HEIGHT%3D641%26LAYERS%3DAir_temp_area%26STYLES%3D%26FORMAT%3Dimage%2Fpng%26QUERY_LAYERS%3DAir_temp_area%26INFO_FORMAT%3Dgeojson%26I%3D598%26J%3D539';

    function mulJSON(url){ 
        var requestUrl = url;
        var time;
        var arr=[];
        var result = (function () {    
            for(var i=0;i<3;i++){
                $.ajax({
                    'async': true,
                    'global': false,
                    'dataType': "json",
                    'url': requestUrl,
                    'success': function (data) {                 
                        arr.push(data.contents.features[0].properties);
                    }
                });
            }

            return arr;
        })(); 
        return result;       
    }
   $.when( mulJSON(stockholmUrl1) ).then(function( data ) {         
        console.log(data);
    });   

});
</script>
</body>
</html>