通常在Javascript中,说我有这个代码:
return (dispatch) => {
return axios.post(`${ROOT_URL}/company`, data).then(companyResponse => {
}).catch(error => {
throw (error);
});
};
现在,在某些情况下,我想打电话给"帖子"带有一些参数的方法(如上所述),在其他情况下,我想使用" put"与不同的参数。 像这样:
// Pseudo code
if(some condition){
// use this: axios.put(`${ROOT_URL}/company`, data, config)
}
// use this: axios.post(`${ROOT_URL}/company`, data)
}
这样做的最佳做法是什么?
答案 0 :(得分:1)
您可以使用带三元运算符的括号表示法根据条件使用post或put。如果满足条件,您还可以使用三元运算符传递配置,否则将空对象作为配置传递。
axios[condition ? 'put' : 'post'](`${ROOT_URL}/company`, data, condition ? config : {})
答案 1 :(得分:0)
您还可以使用axios配置对象指定方法:
const method = condition ? 'put' : 'post' // ternary operator
axios({ method, url: `${ROOT_URL}/company`, data })
.then(...)
.catch(...)
答案 2 :(得分:0)
像这样的东西
是的,完全是这样的。请记住,promises只是值,你可以传递它们并将它们存储在变量中或使它们成为表达式的结果。
return (dispatch) => {
var promise;
if (some condition)
promise = axios.put(`${ROOT_URL}/company`, data, config);
else
promise = axios.post(`${ROOT_URL}/company`, data)
return promise.then(companyResponse => {
…
});
}
或者使用条件运算符:
return (dispatch) => {
return (some condition
? axios.put(`${ROOT_URL}/company`, data, config);
: axios.post(`${ROOT_URL}/company`, data)
).then(companyResponse => {
…
});
}