我创建了一个工厂,处理我所有的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;
}
};
现在,当我正在进行呼叫时,如果几乎没有并行呼叫,则所有承诺解决方案都会混淆。我从另一个请求中得到了结果集。
无法解决问题。我做错了什么?
答案 0 :(得分:0)
问题不是并行呼叫。它在别的地方。用于ajax执行的JS模型工作正常,并且$ http也没有问题。我们使用WebAPI作为后端,我们的一些全局过滤器具有状态,每次调用都会改变状态。因此数据混乱了。客户端没有问题。
谢谢大家