лучший способ написать этот код? Я пытаюсь избежать двойного возврата - PullRequest
0 голосов
/ 12 января 2019
 async function formulateResponse({ response, input }) {
  if (response.statusText === 'No Content') {
    return {
      id: input.customerId,
      paymentMethods: [],
    };
  }
  if (response.statusText !== 'OK') throw new Error(await parseResponseErrors(response));
  const data = await response.json();

  return {
    id: input.customerId,
    paymentMethods: data,
  };
}

Этот код работает, но я не знаю, как написать его лучше, не нарушая логику. Я пытался использовать троичный, но безрезультатно. Можем ли мы сформулировать это лучше? Я не доволен двойным возвратом.

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Это не лучше

async function formulateResponse({ response, input }) {
  const defaultPaymentMethods = [];

  if (['OK', 'No Content'].indexOf(response.statusText === -1) {
     throw new Error(await parseResponseErrors(response)); 
  }

  return  {
    id: input.customerId,
    paymentMethods: response.statusText === 'OK' ?  await response.json().data : [];

};
0 голосов
/ 12 января 2019

Да, вы можете переписать его, чтобы избежать «двойного возврата». Тем не менее, я не уверен, насколько лучше делает это. Используйте else в вашем if, сделайте data иметь больший объем и значение по умолчанию. Мол,

async function formulateResponse({ response, input }) {
  data = [];
  if (response.statusText === 'No Content') {
    // do nothing
  } else if (response.statusText !== 'OK') {
    throw new Error(await parseResponseErrors(response));
  } else {
    data = await response.json();
  }
  return {
    id: input.customerId,
    paymentMethods: data,
  };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...