一尘不染

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

angularjs

有什么方法可以使用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;
}

阅读 420

收藏
2020-07-04

共1个答案

一尘不染

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

 xhr.open(method, url, true);

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

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

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

希望对您有所帮助。

2020-07-04