$ http成功后的承诺决议变得混乱

时间:2014-11-13 08:16:13

标签: angularjs angular-promise angularjs-http

我创建了一个工厂,处理我所有的http相关调用。它返回以下内联代码:

    return {
        get: function (opts) {
            var deferred = $q.defer();
            var def = defaultOptions(HttpMethod.Get);
            $.extend(def, opts);

            $http({ method: 'get', url: config.remoteServiceName + def.url }).then(function (result, status, header) {
                def.success(deferred, { data: result });
            }, function (data) {
                def.error(deferred, data);
            });

            return deferred.promise;
        },
        post: function (opts) {
            var deferred = $q.defer();
            var def = defaultOptions(HttpMethod.Post);
            $.extend(def, opts);

            $http.post(config.remoteServiceName + def.url, def.data).then(function (result) {
                def.success(deferred, result);
            }, function (data) {
                def.error(deferred, data);
            });

            return deferred.promise;
        },
        remove: function (opts) {
            var deferred = $q.defer();
            var def = defaultOptions(HttpMethod.Delete);
            $.extend(def, opts);

            $http({ method: 'delete', url: config.remoteServiceName + def.url }).then(function (result) {
                def.success(deferred, result);
            }, function (data) {
                def.error(deferred, data);
            });

            return deferred.promise;
        }
    };

现在,当我正在进行呼叫时,如果几乎没有并行呼叫,则所有承诺解决方案都会混淆。我从另一个请求中得到了结果集。

无法解决问题。我做错了什么?

1 个答案:

答案 0 :(得分:0)

问题不是并行呼叫。它在别的地方。用于ajax执行的JS模型工作正常,并且$ http也没有问题。我们使用WebAPI作为后端,我们的一些全局过滤器具有状态,每次调用都会改变状态。因此数据混乱了。客户端没有问题。

谢谢大家