我有这段代码:
HTTP.get(
`url`,
{ "params": {"id": id},
"headers": {"h1": getH1(), "h2": getH2()}
}
我想要的是不是在单独的函数中构建头文件,而是在一个函数中构造所有头文件。像这样:
HTTP.get(
`url`,
{ "params": {"id": id},
createHeaders(); //or "headers": {createHeaders()};
}
所以在我的createHeaders()中,我可以选择添加h1,h2 ......中的哪一个。
createHeaders应该看起来像这样(伪代码):
function createHeaders(){
var headers;
if(cond1)
headers.addHeader1();
if(cond2)
headers.addHeader2();
if(cond3)
...
return headers;
}
这可以在JavaScript中完成吗?
请看一下createHeaders函数。我正在寻找的是,如何构造头对象以及返回HTT.get()的内容。
答案 0 :(得分:2)
var _headers = getHeaders(anyArguments);
HTTP.get(
`url`,
{
"params": {"id": id},
"headers": _headers
}
//
function getHeaders(){
var _headers;
if(cond1){
_headers.h1="";
}
return _headers;
}
答案 1 :(得分:1)
您可以查看以下内容
Object.assign
用于合并对象或将对象复制到一个目标对象中。它非常方便,但它是一项新功能,并不是所有浏览器都支持。请在使用前检查browser compatibility。
function getHeaders() {
var header = {
header: null
}
var random = Math.floor(Math.random() * 10 ) % 2
header.header = random === 0 ? "Random is odd" : "Random is even";
return header
}
function makeAPICall() {
var params = {
url: '/test/foo123'
}
Object.assign(params, getHeaders());
console.log(params);
}
makeAPICall();
JS中的对象通过引用传递。您还可以传递对象的引用并进行更新。
function setHeaders(obj) {
var random = Math.floor(Math.random() * 10) % 2
if(random)
obj.header = "Random is odd"
else
obj.header = "random is even"
}
function makeAPICall() {
var params = {
url: '/test/foo123'
}
setHeaders(params);
console.log(params);
}
makeAPICall();
答案 2 :(得分:1)
你可以做到这一点
HTTP.get(
`url`,
{
"params": {"id": id},
"headers": createHeader(condition)
}
function createHeader(condition) {
switch(condition) {
case one:
return {"h1": getH1(), "h2": getH2()}
case two:
return {"h3": getH1(), "h4": getH2()}
}
}
答案 3 :(得分:1)
我认为这是你想要完成的事情:
getH1 = () => 'hello';
getH2 = () => 'world';
function createHeaders(cond){
var headers = {};
for (let i = 0; i < arguments.length; i++) {
switch (arguments[i]) {
case 1:
headers.h1 = getH1();
break;
case 2:
headers.h2 = getH2();
break;
}
}
return headers;
}
console.log('"headers": ', createHeaders(1, 2));
希望这有助于:)