将 POST 同步到 Angular 中的 API

Synchronize POSTs to an API in Angular

我正在尝试将我的 POST 同步到 Angular 中的端点。我确实看到了一些执行同步 GET 的示例,但无法很好地理解这些示例以将它们应用到 POST。

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

抱歉缺少示例,但我还远未找到接近我需要的示例。我的代码仍然是异步的,并且循环调用 $http.post().

您实际上不能在 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 强迫你做这样的事情。