Разница между последовательным и параллельным

Я извлекаю некоторых людей из API, а затем выполняю их параллельно, как бы выглядел код, если бы я делал это последовательно? Даже не уверен, что если ниже параллельно, мне сложно понять разницу между ними двумя.

Я предполагаю, что серийный номер один за другим, а параллельный (обещание.all) ждет, пока все обещания будут разрешены, прежде чем он поместит значение в finalResult?

Это правильно?

Ниже приведен фрагмент моего кода.

Заранее спасибо.

const fetch = require('node-fetch')
    const URL = "https://swapi.co/api/people/";

    async function fetchPerson(url){

        const result = await fetch(url);
        const data = await result.json().then((data)=>data);
        return data ;
    }

    async function printNames() {
      const person1 = await fetchPerson(URL+1);
      const person2 = await fetchPerson(URL+2);
      let finalResult =await Promise.all([person1.name, person2.name]);
      console.info(finalResult);
    }

    printNames().catch((e)=>{

      console.info('There was an error :', e)

      });

Вы знакомы с обещаниями и асинхронным кодом в JS? Ответ на этот вопрос сделает ответы более релевантными для того, чего вы хотите.

c1moore 04.06.2018 14:07

Я опубликовал подробный ответ на ваш вопрос, но я не уверен, что вы пытались понять именно это. Если нет, дайте мне знать, и я могу попробовать обновить его.

c1moore 04.06.2018 14:45

@ c1moore, ваш ответ был действительно полезен, много кусочков сошлось :) Я пытаюсь понять, в чем точная разница между последовательным и параллельным? Плюсы и минусы. Когда и как я буду использовать любой из них? Я пытался разобраться в Serial vs Parallel, но трудно найти примеры, которые четко очерчивают разницу. Большинство из них предназначены только для электронных писем авторов. Так что любая помощь будет оценена по достоинству.

user9807244 04.06.2018 14:58

Я не уверен, что JS - лучший язык для изучения последовательного и параллельного кода. JS более ограничен, чем другие языки; однако я обновлю свой ответ, чтобы затронуть и некоторые из этих тем, когда у меня будет время. Если я не вернусь к нему до конца дня, не стесняйтесь вызвать мне, чтобы напомнить мне об этом.

c1moore 04.06.2018 15:06

Ну, это для экзамена, где я должен использовать JS, так что никакого пути обойтись ... Даже не уверен, что мой учитель может объяснить это должным образом. Не торопитесь, мой друг, вы мне очень помогли.

user9807244 04.06.2018 15:08

Это хорошая причина. Если у вас есть возможность или вы хотите немного разобраться в этом, я бы посоветовал поиграть с многопоточными языками. Я быстро обновил свой ответ. Пожалуйста, дайте мне знать, если это ответит на ваши вопросы, и если вы хотите, чтобы он был отполирован. Мы также можем переместить этот разговор в раздел комментариев к моему ответу и оставить его для комментариев к самому вопросу.

c1moore 04.06.2018 17:13
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
6
672
1

Ответы 1

Обе функции fetchPerson и printNames запускаются последовательно, поскольку вы await обрабатываете результаты. Использование Promise.all в вашем случае бессмысленно, так как оба человека уже подверглись await (устранено).

Чтобы вызвать двух человек одновременно:

const [p1, p2] = await Promise.all([fetchPerson(URL + '1'), fetchPerson(URL + '2')])

Учитывая две асинхронные функции:

const foo = async () => {...}
const bar = async () => {...}

Это серийник:

const x = await foo()
const y = await bar()

Это параллельно:

const [x,y] = await Promise.all([foo(), bar()])

Другие вопросы по теме