当前位置: 首页 > 面试题库 >

如何使用AngularJS进行$ http同步调用

终育
2023-03-14
问题内容

有什么方法可以使用AngularJS进行同步调用吗?

AngularJS文档不是很明确,也不是为了找出一些基本内容而扩展。

在服务上:

myService.getByID = function (id) {
    var retval = null;

    $http({
        url: "/CO/api/products/" + id,
        method: "GET"
    }).success(function (data, status, headers, config) {

        retval = data.Data;

    });

    return retval;
}

问题答案:

不是现在。如果查看源代码(从2012年10月开始),您会发现对XHR
open的调用实际上是硬编码为异步的(第三个参数为true):

 xhr.open(method, url, true);

您需要编写自己的执行同步调用的服务。通常,由于JavaScript执行的性质,您通常不需要执行此操作,最终将阻塞其他所有内容。

…但是..如果实际上需要阻止其他所有内容,也许您应该研究promises和$ q
service
。它使您可以等待一组异步操作完成,然后在完成所有操作后执行一些操作。我不知道您的用例是什么,但这可能值得一看。

除此之外,如果您打算自己动手,可以在这里找到有关如何进行同步和异步ajax调用的更多信息。

希望对您有所帮助。



 类似资料:
  • RestTemplate文档中的Spring注意: 注意:从5.0开始,这个类处于维护模式,只接受微小的更改请求和bug。请考虑使用org.springframework.web.reactive.client.WebClient,它具有更现代的API,支持同步、异步和流场景。 https://docs.spring.io/spring-framework/docs/current/javadoc

  • 我正在为一家德国公司评估Dart,将各种Java程序移植到Dart,并对结果进行比较和分析。在浏览器中,飞镖轻松获胜。对于服务器来说,软件性能似乎是一个严重的问题(请看我的这个问题),但这基本上得到了缓解。 现在我正在移植一些“简单”的命令行工具,我没想到会有任何严重的问题,但至少有一个问题。一些工具确实会发出HTTP请求来收集一些数据,独立的Dart虚拟机只以异步方式支持它们。纵观所有我能找到的

  • 我搜索了许多网站和文档,但异步调用使用的代码相同。但不确定为什么它不起作用。如果我错过了什么,有人能帮我吗?

  • 我在Angluar2应用程序中遇到了一个问题。假设我需要进行两个单独的http调用。一个调用直接取决于另一个调用的结果。代码如下所示: 有嵌套的订阅()调用,我想摆脱。

  • 问题内容: 如何在AngularJS中阻止HTTP请求,以便我可以在下一行使用$ http响应? 在下面的示例中,object不会将结果返回到下一行,因此我可以将此结果传递给JavaScript库,因为它返回空白值。 这是示例代码: 问题答案: 您可以为此使用诺言。 这是一个例子: