JavaScript에서 Promise 속도 향상
3985 단어 webdevnodejavascript
Promise.all
. Promise.all
는 일련의 약속을 수락하고 모든 약속이 해결되면 해결되는 JavaScript에서 제공하는 약속입니다.3개의 서로 다른 API에서 데이터를 가져와야 한다고 가정합니다. 각 API는 응답하는 데 약 3초가 걸립니다. 동시성이 없는 일반 코드는 다음과 같습니다.
async function fetchData() {
const metadata = await getMetadata();
const products = await getProducts();
const categories = await getCategories();
return { metadata, products, categories };
}
위의 코드는 잘 작동합니다. 그러나 동시성을 활용하여 개선할 수 있습니다. 세 가지 기능이 모두 서로 독립적이므로 순차적으로 실행할 필요가 없습니다.
metadata
전에 products
가 필요하지 않습니다. 위의 코드 스니펫을 다음과 같이 다시 작성할 수 있습니다.async function fetchData() {
const metadata = getMetadata();
const products = getProducts();
const categories = getCategories();
return await Promise.all([
metadata,
products,
categories,
]);
}
이제 우리는
metadata
전에 products
를 기다리지 않습니다. 대신 모든 데이터를 동시에 가져옵니다. 이 기술은 매우 강력하고 코드 속도를 높입니다. 이 기술은 특정 입력을 기반으로 데이터를 가져올 수도 있습니다. 제품 목록에 대한 제품 세부 정보를 가져오고 싶다고 가정합니다. 다음과 같이 약속을 리팩터링할 수 있습니다.async function fetchProductDetails(ids) {
const productDetails = await Promise.all(
ids.map(id => getProduct(id))
);
return productDetails;
}
JavaScript는 단일 스레드이므로 각 약속에 대해 자식 프로세스를 만들지 않으면 병렬 처리를 수행할 수 없습니다. 프로세스 생성은 비용이 많이 드는 작업이며 실행 가능성을 떨어뜨리는 특정 오버헤드가 있습니다.
Promise.all
는 동시성을 달성하고 코드 속도를 높이는 좋은 대안입니다. 다시 말하지만 해결하려는 문제에 따라 다릅니다. JavaScript에서 Promise의 속도를 높이려면 어떤 기술이 필요합니까?
Reference
이 문제에 관하여(JavaScript에서 Promise 속도 향상), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/huzaima/speed-up-promises-in-javascript-23i3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)