如何在json返回结果之前阻止函数的执行?

时间:2012-05-01 09:42:13

标签: javascript jquery json jsonp

我正在使用带有JS的Springer OpenAccess API,它们以多种方式提供数据,其中一种是jsonp格式。我的代码如下所示。无论我做什么,我无法让它同步运行。回调机制是很好的解决方案,但我想学习如何同步运行此函数或如何启用此函数的行为同步。

任何帮助将不胜感激。

 SpringerAPI.prototype.getArticleInfo = function(doi){
    //create  url of article according to given doi...
    var url = this.endpoint.host+this.endpoint.method+''+'?q=doi:'+doi+'&api_key='+this.endpoint.apikey+"&callback=?";
    //get information about article...      
    //perform async request to the Springer API
    this.situation = true;
    var article;
    jQuery.ajax({
      method:'POST',
      url: url,
      dataType: 'JSON',
      cache: true,
     async: false, // to set local variable
     success: function(data)
     {
        article = FromSpringerToArticle(data,-1);
     }
    });


    return article;
};

1 个答案:

答案 0 :(得分:4)

由于jQuery doc says

,您无法执行同步JSONP
  

异步

     

...   跨域请求和dataType:“jsonp”请求不支持同步操作...

你必须做一个asyc操作并使用回调。