在ReactJS中,进行并行异步等待调用通常涉及到使用Promise.all
方法。这个方法允许你并行执行多个异步操作,并等待所有操作完成后再继续执行后续代码。这在处理多个并发请求时非常有用,比如从多个API端点获取数据。
Promise.all
可以简化代码,避免回调地狱。import React, { useEffect, useState } from 'react';
function App() {
const [data, setData] = useState([]);
useEffect(() => {
const fetchData = async () => {
try {
const urls = [
'https://api.example.com/data1',
'https://api.example.com/data2',
'https://api.example.com/data3'
];
const promises = urls.map(url => fetch(url));
const responses = await Promise.all(promises);
const results = await Promise.all(responses.map(response => response.json()));
setData(results);
} catch (error) {
console.error('Error fetching data:', error);
}
};
fetchData();
}, []);
return (
<div>
{data.map((item, index) => (
<div key={index}>{JSON.stringify(item)}</div>
))}
</div>
);
}
export default App;
Promise.all
会立即拒绝并返回错误。可以通过捕获错误来处理这种情况。try {
const results = await Promise.all(promises.map(p => p.catch(e => null)));
} catch (error) {
console.error('Error:', error);
}
const fetchWithTimeout = (url, options, timeout = 5000) => {
return Promise.race([
fetch(url, options),
new Promise((_, reject) =>
setTimeout(() => reject(new Error('Request timed out')), timeout)
)
]);
};
通过以上方法,你可以在ReactJS中有效地进行并行异步等待调用,提高应用的性能和响应速度。
领取专属 10元无门槛券
手把手带您无忧上云