有什么方法可以使用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调用的更多信息。
希望对您有所帮助。