Promise.all로 여러 URL 가져오기 정복
비동기 프로그래밍 영역에서 Promise는 가져오기와 같은 비동기 작업을 처리하는 강력한 메커니즘을 제공합니다. 여러 URL의 데이터. 지금까지 경험한 것처럼 이 사용 사례를 Promise.all 패러다임에 맞추려고 하면 걸림돌이 될 수 있습니다.
시도한 솔루션을 분석해 보겠습니다.
var promises = urls.map(url => fetch(url)); var texts = []; Promise.all(promises) .then(results => { results.forEach(result => result.text()).then(t => texts.push(t)) })
이 방법은 심각한 결함: forEach는 배열이나 Promise를 반환하지 않으므로 가져온 텍스트에 액세스할 수 있는 방법이 없는 promise-void 상태가 됩니다.
이를 수정하려면 Promise.all을 두 번 사용해야 합니다. URL을 한 번 사용하여 응답에서 텍스트를 추출합니다.
Promise.all(urls.map(u=>fetch(u))).then(responses => Promise.all(responses.map(res => res.text())) ).then(texts => { … })
또는 가져오기와 텍스트 검색을 한 단계로 결합하여 프로세스를 간소화할 수 있습니다.
Promise.all(urls.map(url => fetch(url).then(resp => resp.text()) )).then(texts => { … })
자세한 내용은 간결한 솔루션, async/await의 기능을 활용하세요.
const texts = await Promise.all(urls.map(async url => { const resp = await fetch(url); return resp.text(); }));
이러한 접근 방식을 사용하면 여러 URL 가져오기를 효율적으로 처리할 수 있어 추출된 텍스트가 포함된 원하는 개체를 구축할 수 있습니다.
위 내용은 Promise.all을 사용하여 여러 URL에서 데이터를 효율적으로 가져오는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!