Я извлекаю некоторых людей из 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)
});
Я опубликовал подробный ответ на ваш вопрос, но я не уверен, что вы пытались понять именно это. Если нет, дайте мне знать, и я могу попробовать обновить его.
@ c1moore, ваш ответ был действительно полезен, много кусочков сошлось :) Я пытаюсь понять, в чем точная разница между последовательным и параллельным? Плюсы и минусы. Когда и как я буду использовать любой из них? Я пытался разобраться в Serial vs Parallel, но трудно найти примеры, которые четко очерчивают разницу. Большинство из них предназначены только для электронных писем авторов. Так что любая помощь будет оценена по достоинству.
Я не уверен, что JS - лучший язык для изучения последовательного и параллельного кода. JS более ограничен, чем другие языки; однако я обновлю свой ответ, чтобы затронуть и некоторые из этих тем, когда у меня будет время. Если я не вернусь к нему до конца дня, не стесняйтесь вызвать мне, чтобы напомнить мне об этом.
Ну, это для экзамена, где я должен использовать JS, так что никакого пути обойтись ... Даже не уверен, что мой учитель может объяснить это должным образом. Не торопитесь, мой друг, вы мне очень помогли.
Это хорошая причина. Если у вас есть возможность или вы хотите немного разобраться в этом, я бы посоветовал поиграть с многопоточными языками. Я быстро обновил свой ответ. Пожалуйста, дайте мне знать, если это ответит на ваши вопросы, и если вы хотите, чтобы он был отполирован. Мы также можем переместить этот разговор в раздел комментариев к моему ответу и оставить его для комментариев к самому вопросу.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Обе функции 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()])
Вы знакомы с обещаниями и асинхронным кодом в JS? Ответ на этот вопрос сделает ответы более релевантными для того, чего вы хотите.