Сохраните книгу в локальной переменной, автора и издателя загрузите через Promise.all, затем запросите книги автора.
Как организовать эту цепочку запросов с помощью Promise: после получения книги параллельно загрузить автора и издателя, затем получить названия книг автора и сохранить данные книги до финального результата?
Сохраните книгу в локальной переменной, автора и издателя загрузите через Promise.all, затем запросите книги автора.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сохраните книгу в локальной переменной, автора и издателя загрузите через Promise.all, затем запросите книги автора.
Ниже API-функции — адаптеры, возвращающие Promise: книга содержит authorId/publisherId, автор — id, список книг — объекты с title.
async function loadBookDetails(id, api) {
const book = await api.getBook(id);
const [author, publisher] = await Promise.all([
api.getAuthor(book.authorId),
api.getPublisher(book.publisherId)
]);
const books = await api.getAuthorBooks(author.id);
return { book, author, publisher, titles: books.map(b => b.title) };
}
Ошибка любого необходимого запроса отклоняет результат. Если издатель необязателен, обработку частичного успеха нужно явно добавить в контракт.