Javascript 如何阻止函数执行直到返回json结果?

Javascript 如何阻止函数执行直到返回json结果?,javascript,jquery,json,jsonp,Javascript,Jquery,Json,Jsonp,我将Springer OpenAccess API与JS一起使用,它们以多种方式提供数据,其中之一是jsonp格式。我的代码如下所示。无论我做什么,我都无法使它同步运行。回调机制是一个很好的解决方案,但我想学习如何同步运行这个函数,或者如何使这个函数能够同步运行 任何帮助都将不胜感激 SpringerAPI.prototype.getArticleInfo = function(doi){ //create url of article according to given doi.

我将Springer OpenAccess API与JS一起使用,它们以多种方式提供数据,其中之一是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;
};

您不能执行同步JSONP,因为

异步的 。。。 跨域请求和数据类型:“jsonp”请求不支持同步操作


您必须执行asyc操作并使用回调。

您不能执行同步JSONP,因为

异步的 。。。 跨域请求和数据类型:“jsonp”请求不支持同步操作


您必须执行asyc操作并使用回调。

有没有办法模拟它?因为我真的需要这样做:/@ibrahimyilmaz:你不应该这样做,而且不,你不能模拟它。@ibrahimyilmaz为什么?回调有什么问题?如果由于程序设计的原因,您正在执行同步操作,那么您需要进行一些重新设计。是否需要等待响应到来?我这样问是因为我需要找到一种方法:/@Ibrahim:如果集成有问题,也许你应该开始研究延迟对象。它们提供了一种非常灵活的方法来处理回调。有没有方法来模拟它?因为我真的需要这样做:/@ibrahimyilmaz:你不应该这样做,而且不,你不能模拟它。@ibrahimyilmaz为什么?回调有什么问题?如果由于程序设计的原因,您正在执行同步操作,那么您需要进行一些重新设计。是否需要等待响应到来?我这样问是因为我需要找到一种方法:/@Ibrahim:如果集成有问题,也许你应该开始研究延迟对象。它们提供了一种非常灵活的处理回调的方法。学习如何正确处理回调比学习如何使Ajax调用同步更有用。JSONP不能是同步的,因为它实际上不是Ajax。它包括一个指向远程URL的脚本标记,在加载DOM后,它永远不会同步。如果我找不到任何解决方案,我想更改我们架构师的请求。@ibrahimyilmaz:这(CR)是您唯一的选择。JSON-P本质上是异步的,您无法让函数等待JSON-P结果的到来。此外,架构师应该首先正确地设计它。学习如何正确地使用回调比学习如何使Ajax调用同步更有用。JSONP不能是同步的,因为它实际上不是Ajax。它包括一个指向远程URL的脚本标记,在加载DOM后,它永远不会同步。如果我找不到任何解决方案,我想更改我们架构师的请求。@ibrahimyilmaz:这(CR)是您唯一的选择。JSON-P本质上是异步的,您无法让函数等待JSON-P结果的到来。而且,架构师首先应该正确地设计它。