javascript - ajax调用不会同步执行

标签 javascript jquery html ajax performance

我建立了一个天气网站,首先调用 flickr API,然后调用 yahoo API 获取天气信息。问题是来自 ajax 调用的数据 - 来自 yahoo API 没有及时到达页面加载其内容。

我曾尝试减慢 ajax 调用的一些方法:

  • 设置超时
  • $.ajax(success: ) 调用的整个函数包装到另一个函数中,将其包装在 setTimeout
  • $.ajax(success:)中取出回调函数,放入$.ajax(complete:)参数
  • 获取 $.ajax(success: ) 传入的 data 对象,并将其复制到另一个 var,然后在 ajax 调用之外放置函数处理 $.ajaxComplete() 中的数据,传递新对象 var

我尝试过更多方法来解决这个问题,但我已经研究了 3 天,但找不到解决方案。有人可以帮我吗

这是项目的链接

My Weather App On codeine.io

function RunCALL(url)
    {
      var comeBack = $.ajax({
      url: url,
      async: false,
      dataType:"jsonp",
      crossDomain: true,
      method: 'POST',
      statusCode: {
      404: function() {console.log("-4-4-4-4 WE GOT 404!");},
      200: function() {console.log("-2-2-2-2 WE GOT 200!");}},
      success: function(data){ 
      weatherAndFlickrReport(data);},                                                                                                                     
      error: function(e) {console.log(e);}         
     });  
    }

最佳答案

你在使用 jQuery 吗?如果是这样,你必须链接你的回调。从高层次上看,它看起来像:

//You might want to use .get or .getJSON, it's up to what response you're expecting...
$.getJSON('https://example.com/api/flickr', function(response) {
  //This your callback. The URL would end up being https://example.com/api/yahoo/?criteria=lalalalala
  $.getJSON('https://example.com/api/yahoo/', { criteria: response.propertyYouWant}, function(yahooResponse) {
    //Do something with your response here.
    });
});

编辑:我已经用一个可行的解决方案(基于上述 AJAX 请求)更新了您的代码段,现在显示您的两个 JSON 对象已准备好使用。 Looky here.

关于javascript - ajax调用不会同步执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37230950/

相关文章:

javascript - 将 <param> 元素添加到 <object>

JQUERY 滑动门效果 - 适用于 jsFiddle 但不适用于 chrome

jQuery 缓动插件不起作用

javascript - 无法在 jQuery 中刷新 Accordion

html - 我应该为我的网站使用什么位置[需要建议]

javascript - 如何从React Form -> Flask Backend -> React Component传递数据(和CORS有关系吗)?

javascript - 如何使用 jquery 解析 json 以及如何检查它的有效 json

javascript - 一页上具有相同结构的多个模态框

html - 将两个不同样式的页面合并为一个

javascript - 如何获得淡入淡出的模态效果?