上一篇
使用相对路径:
// 错误示例:绝对路径导致404 script.src = '/wrong/path/to/script.js'; // 正确示例:相对路径 script.src = '../correct/path/to/script.js';
动态路径生成:根据环境变量或配置动态拼接路径,避免硬编码。
location
块)。// 服务端设置响应头 Access-Control-Allow-Origin: *
$.ajax({ url: 'js/file.js', error: function(xhr) { if (xhr.status === 404) { console.error('JS文件加载失败!'); // 回退方案:加载备用文件或提示用户 } } });
function loadScript(url, fallback) { fetch(url).catch(() => fetch(fallback)); }
<!-- 页面初始化时创建占位div --> <div id="data-container"> <div class="data-slot" id="slot-1"></div> div class="data-slot" id="slot-2"></div> </div>
// 循环请求数据并填充到对应slot async function loadData() { const slots = document.querySelectorAll('.data-slot'); for (let i = 0; i < slots.length; i++) { const data = await fetchData(i); // 逐条请求 slots[i].innerHTML = data; } }
Promise.all()
并行加载数据: async function loadDataInParallel() { const promises = Array.from({length: 5}, (_, i) => fetchData(i)); const results = await Promise.all(promises); results.forEach((data, i) => { document.getElementById(`slot-${i}`).innerHTML = data; }); }
const debouncedFetch = _.debounce((query) => { fetchData(query).then(data => updateDOM(data)); }, 300);
<div id="loading">加载中...</div> <div id="error" style="display:none;">数据加载失败</div>
async function fetchData() { showLoading(); try { const data = await axios.get('/api/data'); updateDOM(data); } catch (error) { showError(); } finally { hideLoading(); } }
async function fetchWithRetry(url, retries = 3) { for (let i = 0; i < retries; i++) { try { return await axios.get(url); } catch (error) { if (i === retries - 1) throw error; await new Promise(resolve => setTimeout(resolve, 1000)); } } }
Vue示例:
<template> <div v-if="loading">加载中...</div> <div v-else> <div v-for="item in data" :key="item.id">{{ item.content }}</div> </div> </template> <script> export default { data() { return { data: [], loading: true }; }, async mounted() { try { const response = await axios.get('/api/data'); this.data = response.data; } catch (error) { console.error('加载失败:', error); } finally { this.loading = false; } } }; </script>
React示例:
import React, { useState, useEffect } from 'react'; function DataComponent() { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { const fetchData = async () => { try { const response = await fetch('/api/data'); setData(await response.json()); } catch (error) { console.error('加载失败:', error); } finally { setLoading(false); } }; fetchData(); }, []); return ( <div> {loading ? <div>加载中...</div> : data.map(item => ( <div key={item.id}>{item.content}</div> ))} </div> ); } export default DataComponent;
error
回调,结合全局错误拦截(如Axios拦截器)。通过以上方案,可高效解决前端异步请求中的404问题和数据加载乱序问题,同时保障用户体验和代码健壮性! 💪
本文由 业务大全 于2025-08-26发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://xdh.7tqx.com/wenda/737474.html
发表评论