Как организовать эту цепочку запросов с помощью Promise: после получения книги параллельно загрузить автора и издателя, затем получить названия книг автора и сохранить данные книги до финального результата?

Сохраните книгу в локальной переменной, автора и издателя загрузите через Promise.all, затем запросите книги автора.

Короткий ответ

Что ответить на собеседовании

Сохраните книгу в локальной переменной, автора и издателя загрузите через 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) };
}

Ошибка любого необходимого запроса отклоняет результат. Если издатель необязателен, обработку частичного успеха нужно явно добавить в контракт.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее