Я пытаюсь понять Обещания в 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
?