Как избежать использования функции asyn c в обещании исполнителя - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь понять Обещания в Javascript. У меня есть ситуация, когда в моем коде есть некоторые «вложенные» обещания, и при установке ESLint я осознал, что функции asyn c в исполнителях Promise считаются антишаблоном. У меня есть код в соответствии с:

const main = (indata) => {
  heavyOperation(indata).then( (res) => {
    console.log(res);
  }).catch( err => {
    console.err(err);
  }).finally( () => {
    cleanUp();
  }
}

async const heavyOperation = (indata) => {
  return new Promise( (resolve, reject) => {
    preProcess(indata);
    try {
      const result = await calculate(indata);
    } catch (err) {
      console.err('Error in calculation.');
      reject(err);
    }      
    const processedResult = postProcess(result);
    resolve(processedResult);
  }
}

const preProcess = (indata) => { 
  //preprocessing
}

async const calculate = () => {
  // do stuff
}

const postProcess = (result) => { 
  //postprocessing
}

main(indata);

Как я могу рефакторинг этого кода? Должен ли я избавиться от heavyOperation возврата обещания полностью? Как мне достичь функциональности .then, .catch, .error?

1 Ответ

0 голосов
/ 27 марта 2020

в этом случае попробуйте использовать Обещание цепочки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...