将POST同步到Angular中的API

时间:2015-05-26 12:53:22

标签: ajax angularjs synchronous

我正在尝试将我的POST同步到Angular中的端点。我确实看到了一些做同步GET的例子,但是很难理解这些例子以便将它们应用到POST中。

POST非常简单,至少从我作为前端开发人员的角度来看。我将具有父组ID和子组ID的对象发送到/ parentgroups端点。但是,在后端,异步调用会导致数据被覆盖。

对于缺乏一个例子而道歉,但我还远远没有一个接近我需要的工作。我的代码仍然是异步的,并且是对$ http.post()的调用的循环。

1 个答案:

答案 0 :(得分:1)

你实际上无法在Angular中进行真正的同步(如阻止)http调用,它会强制你使用异步。如果你不能通过回调来做到这一点,那么你的架构存在问题,整个团队应该专注于解决 ASAP 。如果您当前的架构要求前端进行阻塞调用,那么您的架构很简单,需要修复。

无论如何,虽然我建议你反对它,你总是可以在一个列表中注册你的请求,然后在每个回调中你从列表中弹出下一个请求并运行它。这样你就可以继续将请求推入列表而不知道会有多少。这样的事情(未经测试,但一般原则应该有效):

var requestList = [];
requestList.push(function() {
    $http.post('/someUrl', {})
    .success(function(data, status, headers, config) {
        // Remove the next request from list and call it
        requestList.shift()();
    });
});
requestList.push(function() {
    $http.post('/someOtherUrl', {})
    .success(function(data, status, headers, config) {
        // Remove the next request from list and call it
        requestList.shift()();
    });
});

// Start the first request
requestList.shift()();

这很干净,但仍然有点黑客。它可能会正常工作,但我会仔细研究为什么API会强迫你做这样的事情。