Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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 如何等待多个网络请求完成?_Javascript_Jquery_Json_Getjson - Fatal编程技术网

Javascript 如何等待多个网络请求完成?

Javascript 如何等待多个网络请求完成?,javascript,jquery,json,getjson,Javascript,Jquery,Json,Getjson,在使用返回的数据调用函数之前,我需要等待两个api调用完成 url = "https://nominatim.openstreetmap.org/reverse.php?zoom=18&format=json&accept-language=si&lat=" + lat + "&lon=" + lon; url2 = "https://nominatim.openstreetmap.org/reverse.php?zoom=15&format=json&

在使用返回的数据调用函数之前,我需要等待两个api调用完成

url = "https://nominatim.openstreetmap.org/reverse.php?zoom=18&format=json&accept-language=si&lat=" + lat + "&lon=" + lon;

url2 = "https://nominatim.openstreetmap.org/reverse.php?zoom=15&format=json&accept-language=si&lat=" + lat + "&lon=" + lon;
在这里,我需要在两个getjson之间添加settimeout或间隔2000毫秒。 之后可以从一个和第二个json响应中获得响应。 如果未传输第二个json,则不可能从第一个json获取响应


感谢您的帮助。

等待多个异步函数完成的最佳方法是使用
Promise。所有

下面是一个使用fetch编写网络调用的更现代方法的示例:

异步函数fetchMap([lat,lon]){ const request=等待获取( `https://nominatim.openstreetmap.org/reverse.php?zoom=18&format=json&accept-语言=si&lat=${lat}&lon=${lon}` ); return wait request.json(); } 异步函数getMapData(coordinates1、coordinates2、回调){ const request1=fetchMap(坐标1) const request2=fetchMap(坐标2) const resolvedResponses=等待承诺.all([request1,request2]); 回调(…resolvedResponses); } //这将获得东京和纽约的数据, //并等待调用传入函数,直到返回两组JSON数据。 getMapData([35.6850139.7514],[40.6943,-73.9249],console.log); /*^而不是“console.log”,放置对要调用的函数的引用。 它可能是一个匿名函数,如您的问题中所示*/
您的上一句话含糊不清。您好,我已经检查过这是否正确。但是如何从两个不同的链接获取数据呢。如果你可以检查我已经发送了两个不同的链接。在url中,我们有zoom=15和zoom=18@progy85您可以复制
fetchMap
函数,重命名它,并更改URL。(这有帮助吗?)
$.when($.getJSON(url), $.getJSON(url2)).done(function (data1, data2) {