Возьмите следующий надуманный пример:
const housekeepingStuff = async function (data) {
const result = await notImportant(data);
result.more = 'yawn';
storeInDatabase(result);
};
const getStuff = async function () {
try {
const data = await getData();
data.extra = 'wow';
housekeepingStuff(data); // <---- don't want to await... but need to for error catching
return Promise.resolve(data);
} catch (err) {
return Promise.reject(err);
}
};
try {
const myData = await doSomeStuff();
res.send(myData);
} catch (err) {
console.log(err);
res.sendStatus(400);
}
Я хочу вернуть данные из getStuff ()
КАК МОЖНО СКОРЕЕ, не дожидаясь housekeepingStuff()
, но если я не жду эту функцию, то у меня возникнет ошибка,
Я мог бы вызвать housekeepingStuff()
вне функции getStuff()
, после получения и отправки данных тому, кто захочет:
try {
const myData = await doSomeStuff();
res.send(myData);
await housekeepingStuff(data); // <---- am awaiting but who cares because nothing follows
} catch (err) {
console.log(err);
res.sendStatus(400);
}
Но это не так, потому что я нене нужно помнить, чтобы каждый раз, когда я звоню doSomeStuff()
, звонил housekeepingStuff()
... в идеале он должен обрабатываться "внутренне".
Какой здесь правильный подход?