typescript 如何优化此javascript方法代码?

ff29svar  于 2022-11-30  发布在  TypeScript
关注(0)|答案(1)|浏览(107)

在checkData方法中,我正在检查2个API的状态是已完成还是已拒绝,并基于此发送API数据和FailFlag。我如何优化它,因为我已经使用了if else语句。

const checkData = (data, allData, failFlag) => {
  if (data && data[0].status === 'fulfilled' && data[1].status === 'fulfilled') {
    if (data[0].value && data[1].value) {
      allData.push(...data[0].value, ...data[1].value);
      failFlag = 'NONE';
    }
  } else if (data[0].status === 'rejected' && data[1].status === 'fulfilled') {
    allData.push(...data[1].value);
    failFlag = 'INTERNAL';
  } else if (data[0].status === 'fulfilled' && data[1].status === 'rejected') {
    allData.push(...data[0].value);
    failFlag = 'EXTERNAL';
    console.log('All data with fail flag', allData, failFlag);
  } else {
    Promise.reject('Both are rejected');
    failFlag = 'ALL';
  }
  return { errorFlag: failFlag, accounts: allData };
};
hujrc8aj

hujrc8aj1#

我不知道为什么要传入failFlag,因为你从来没有使用过这个变量。我也不知道为什么要写Promise.reject('Both are rejected');。但是,代码可以简化如下:

const checkData = ([{status:s0, value:v0}, {status:s1, value:v1}]=[{},{}], allData) => {
  let errorFlag = 'NONE';
  let f0 = s0 === 'fulfilled';
  let f1 = s1 === 'fulfilled';
  if(f0) allData.push(...v0);
  if(f1) allData.push(...v1);
  if(!f0 && !f1) errorFlag = 'ALL';
  if(!f0 &&  f1) errorFlag = 'INTERNAL';
  if( f0 && !f1) errorFlag = 'EXTERNAL';
  return { errorFlag, accounts: allData };
};

相关问题