возникают проблемы при попытке написать следующий код таким образом, чтобы не включать вложенные обещания.
function trickyFunction(queryOptions, data) {
return new Promise((resolve, reject) => {
if (data) {
resolve(data);
} else {
// ... a bunch of conditions to check and/or modify queryOptions. These checks and mods
// are vital but only required if data is not passed in. ...
if (anErrorHappensHere) {
reject('Oh no, an error happened');
}
somePromise(queryOptions).then((result) => {
resolve(result);
});
}
}).then((result) => {
criticalOperation1(result);
// the code here is long and shouldn't be duplicated
});
}
Мне действительно не нравится цепочка .then () после somePromise
, поскольку она находится внутри new Promise
, но я действительно не вижу пути ее обхода.Если я возьму условное из обещания, то мне придется дублировать код критической операции 1, который здесь не подходит.Условные проверки в блоке else
должны выполняться только в том случае, если data
не передается. Создание других функций в моем случае запрещено, а использование async / await также запрещено в моем случае.
У кого-нибудь есть какие-либо идеи?Я немного поработал с «Обещаниями», но это меня озадачило.