<Sequential Request>
: 코드의 순서에 따라 진행
async function get3Pokemon() {
// 순서에 따라서 코드진행
// they are independent lines
const poke1 = await axios.get('http://pokeapi.co/api/v2/pokemon/1');
// poke1 is a value(response) here, not a promise
const poke2 = await axios.get('http://pokeapi.co/api/v2/pokemon/2');
const poke3 = await axios.get('http://pokeapi.co/api/v2/pokemon/3');
console.log(poke1.data);
console.log(poke2.data);
console.log(poke3.data);
}
get3Pokemon();
<Parallel Request의 옳지 않은 예시>
- 세개의 데이터 모두 undefine으로 출력된다.
async function get3Pokemon() {
// poke1 IS a promise here
const poke1 = axios.get('http://pokeapi.co/api/v2/pokemon/1');
const poke2 = axios.get('http://pokeapi.co/api/v2/pokemon/2');
const poke3 = axios.get('http://pokeapi.co/api/v2/pokemon/3');
await poke1;
await poke2;
await poke3;
console.log(poke1.data);//undefine
console.log(poke2.data);//undefine
console.log(poke3.data);//undefine
}
get3Pokemon();
<Parallel Request>
- 각각의 리퀘스트를 변수로 지정해 await를 걸어줌. 데이터 출력 확인 가능
async function get3Pokemon() {
const prom1 = axios.get('http://pokeapi.co/api/v2/pokemon/1');
const prom2 = axios.get('http://pokeapi.co/api/v2/pokemon/2');
const prom3 = axios.get('http://pokeapi.co/api/v2/pokemon/3');
const poke1 = await prom1;
const poke2 = await prom2;
const poke3 = await prom3;
console.log(poke1.data);
console.log(poke2.data);
console.log(poke3.data);
}
get3Pokemon();
<Promise.all을 이용한 Parallel Request>
- 변수를 지정할 필요 없이 Promise.all을 이용해주면 간편
async function get3Pokemon() {
const prom1 = axios.get('http://pokeapi.co/api/v2/pokemon/1');
const prom2 = axios.get('http://pokeapi.co/api/v2/pokemon/2');
const prom3 = axios.get('http://pokeapi.co/api/v2/pokemon/3');
console.log(prom1); // <pending>
const results = await Promise.all([prom1, prom2, prom3]);
console.log(prom1); // <resolved>
printPokemon(results);
}
//this code will be runned after all the promises are resolved
function printPokemon(results) {
for (let pokemon of results) {
console.log(podata.name);
}
}
get3Pokemon();
-모든 코드는 Promise들이 처리된 후에 실행된다.
'javascript' 카테고리의 다른 글
JavaScript/ The Async & The Await (0) | 2020.04.15 |
---|---|
JavaScript/ AXIOS (0) | 2020.04.14 |
JavaScript/ Fetch API (0) | 2020.04.14 |
JavaScript/ AJAX & XML Http Request (0) | 2020.04.14 |
JavaScript/ CallBack Hell & Promise! (0) | 2020.04.14 |