ajax调用不会同步执行

时间:2016-05-14 19:26:02

标签: javascript jquery html ajax performance

我已经建立了一个调用flickr API 1st的天气网站,然后根据天气调用yahoo API。问题是来自ajax调用的数据 - 来自yahoo API的数据并不及时加载页面。

我曾经尝试过减慢ajax调用的一些事情:

  • setTimeout
  • $.ajax(success: )调用的整个函数包装到另一个函数中,并将其包装在setTimeout
  • $.ajax(success: )中取出回调函数,然后输入$.ajax(complete: ) param
  • 获取data传递的$.ajax(success: )对象,并将其复制到另一个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);}         
     });  
    }

1 个答案:

答案 0 :(得分:1)

您使用的是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.