Просто склейте их в одну цепочку. Что-то типа:
макароныconst state = {};
const getJSON = response => response.json();
getAuth()
.then(getJSON)
.then(({ id }) => {
state.id = id;
return getUser(id);
})
.then(getJSON)
.then(user => {
state.user = user;
})
.then(() => getOrder('users', state.id))
.then(getJSON)
.then(({ order }) => state.order = order)
.catch(console.error)
.finally(() => console.log("all done", state));
возможна ли реализация данной логики с помощью Promise.allSettled?
Нет.
allSettled() параллелит выполнение всех промисов и дожидается, чтобы «все расселись» – будь то resolve или reject.
Хотя, пожалуй, тут можно последние два запроса запараллелить. Они оба нуждаются сначала в авторизации, а затем могут идти независимо-одновременно.
const state = {};
// подготовка
const getJSON = response => response.json();
const getUser = id =>
fetchUser(id)
.then(getJSON)
.then(({ user }) => (state.user = user));
const getOrder = id =>
fetchOrder('users', id)
.then(getJSON)
.then(({ order }) => (state.order = order));
// поехали
getAuth()
.then(getJSON)
.then(({ id }) => {
state.id = id;
return Promise.allSettled([getUser(id), getOrder(id)]);
})
.catch(console.error)
.finally(() => console.log('all done', state));