2

我创建了一个工厂来处理我所有的 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;
        }
    };

现在,当我进行调用时,如果进行的并行调用很少,则所有承诺解决方案都会混淆。我正在从另一个请求中的一个请求中获取结果集。

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

4

1 回答 1

0

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

感谢大家

于 2016-01-09T09:43:48.837 回答