Javascript 如何从API同步获取JSON

Javascript 如何从API同步获取JSON,javascript,ajax,html,asynchronous,synchronous,Javascript,Ajax,Html,Asynchronous,Synchronous,我很清楚这一准则: $.ajax({ url:'http://api.rottentomatoes.com/api/public/v1.0/lists/dvds/new_releases.json?page_limit=16&page=1&country=us&apikey=k4uaze4937mw3hf82upstxqw', type:'GET', dataType:'jsonp', success:function(data){ var movies = da

我很清楚这一准则:

$.ajax({
url:'http://api.rottentomatoes.com/api/public/v1.0/lists/dvds/new_releases.json?page_limit=16&page=1&country=us&apikey=k4uaze4937mw3hf82upstxqw',
type:'GET',
dataType:'jsonp',
success:function(data){
    var movies = data.movies;
    $.each(movies, function() {
    $('#datalist').append('<li><a><img src='+this.posters.thumbnail+' class="ui-li-thumb"><h3 class="ui-li-heading">'+this.title+'</h3><p class="ui-li-desc">DVD Date: '+this.release_dates.dvd+'</p></a></li>').listview('refresh');    
    //get data from ul

    });
},

error: function(xhr, textStatus, errorThrown){
        alert('request failed :'+xhr);
                    alert('request failed :'+textStatus);
    alert('request failed :'+errorThrown);
}
}); 
$.ajax({
网址:'http://api.rottentomatoes.com/api/public/v1.0/lists/dvds/new_releases.json?page_limit=16&page=1&country=us&apikey=k4uaze4937mw3hf82upstxqw',
类型:'GET',
数据类型:'jsonp',
成功:功能(数据){
var movies=data.movies;
$.each(电影、函数(){
$(“#数据列表”).append(“
  • ”+this.title+”

    DVD日期:“+this.release#dates.DVD+”

  • ”).listview('refresh'); //从ul获取数据 }); }, 错误:函数(xhr、textStatus、errorshown){ 警报(“请求失败:”+xhr); 警报('请求失败:'+文本状态); 警报('请求失败:'+错误抛出); } });
    问题是这段代码是异步工作的。我想用

    var lis = new Array();
    
    // Iterate through the <li> items
    $("#tag-cloud-list").children("li").each(function()
    {
        lis.push($(this).text());
    });
    
    var lis=new Array();
    //遍历
  • 项 $(“#标记云列表”).children(“li”).each(函数() { lis.push($(this.text()); });
  • 获取列表中的项目(以便确定数据是否已更改)。问题是列表是空的,因为在我运行此代码之前数据没有到达(因为它是异步的)

    所以我需要一个同步版本的代码来从API获取JSON。基本上,我认为这段代码是我运行的第一段代码,其他所有代码都是在这段代码之后运行的。这样,当我检查值时,我就可以确定我的ul是否已填充

    我在ajax调用中尝试了async:false,但它似乎没有任何作用


    我想做的是:同步填充页面,然后每30秒运行一次异步代码,检查/更新同步脚本输入的值。这就是我需要两者的原因。

    jquery ajax调用使用jsonp不支持
    async:false
    ,这就是为什么该选项不起作用的原因。我不认为您正在寻找一种方法来进行此同步,我认为您只需要一种方法使其能够异步工作。您是否考虑过在ajax请求完成之前添加加载微调器?如何在异步任务完成之前停止所有操作?这不是异步任务的要点吗?有同步方法吗?只有在请求成功并且数据从服务器返回后,才会调用success函数。使用异步方法总是更好的