我的系统中有一个通用组件,用于处理以块为单位提交HTTP请求。它负责我需要附加的一些应用程序通用头文件并更新GUI中的所有必要位置。
此组件在各种其他组件之间共享,用于各种用例。我正在尝试将从给定输入创建HTTP请求的任务委托给调用者,但发现当调用者执行此操作时:
var req = $http.get("url", {})
它已经提交了请求。
我希望调用者提供一种从输入生成请求对象列表的方法,我的组件稍后会处理它(例如,添加一些标题,添加success()
和{{1}方法,或批量提交请求。)
如何在不发送的情况下创建HTTP Request对象?
答案 0 :(得分:2)
您可以为"延迟"创建包装函数http请求,它将返回您预配置的准备调用函数,并使用它而不是$http
。
也许是这样的:
function dHttp(config) {
return function(options) {
angular.merge(config, options);
return $http(config);
}
}
var req = dHttp({
url: '/some',
data: {test: 21}
});
// later send it
req().then(function(data) {
console.log(data);
});
答案 1 :(得分:0)
普通的AJAX在这里很有用
xmlhttp.open("GET","a-url",true);
xmlhttp.send();
$http.get()
是ajax open和send的声明形式。
var reqArr = [];
reqArr.push(xmlhttp.open("GET","a-url",true));
reqArr.push(xmlhttp.open("GET","b-url",true));
reqArr.push(xmlhttp.open("GET","c-url",true));
因此您可以根据需要更改对象并稍后发送ajax。