¿Cómo puedo simplificar este código para usar el encadenamiento de métodos condicionales para el método useBuffer()? Por favor recomiende.
const getApi = async (headers, userContext, httpRequest, url, isBlob) => { if (isBlob) { const result = await httpRequest .get(url) .withCredentials() .set(headers) .send({ userContext }) .useBuffer() .then((res) => [res.body, res.headers]); return result; } else { const result = await httpRequest .get(url) .withCredentials() .set(headers) .send({ userContext }) .then((res) => res); return result; } };a algo como esto:
const getApi = async (headers, userContext, httpRequest, url, isBlob) => { const result = await httpRequest .get(url) .withCredentials() .set(headers) .send({ userContext }) .isBlob && useBuffer() .then((res) => isBlob ? [res.body, res.headers] : res); return result; };¿Qué hay de guardar la cadena anterior en una variable?
const getApi = async (headers, userContext, httpRequest, url, isBlob) => { const sent = await httpRequest .get(url) .withCredentials() .set(headers) .send({ userContext }) return !isBlob ? sent : sent .useBuffer() .then((res) => [res.body, res.headers]); }; El .then((res) => res); es completamente superfluo y por lo tanto se puede eliminar.
.then((res) => res) es redundante y los parámetros booleanos que controlan la estructura son de diseño cuestionable, entonces, ¿qué tal:
const getApi = (headers, userContext, httpRequest, url) => httpRequest .get(url) .withCredentials() .set(headers) .send({ userContext }); const getApiBlob = (headers, userContext, httpRequest, url) => getApi(headers, userContext, httpRequest, url) .useBuffer() .then((res) => [res.body, res.headers]);