解决打印问题:let errMsg = []; // 监听字体外链请求 $.ajax({ url: $('#iconfont').attr('href'), type: 'get', success: () => { // console.log('You iconfont CDN is up to date'); errMsg.push('You iconfont CDN is up to date') }, error: (XMLHttpRequest, textStatus, errorThrown) => { // alert(`字体外链失效,需要更新 CDN:${textStatus} - ${errorThrown}`) errMsg.push(`字体外链失效,需要更新 CDN:${textStatus} - ${errorThrown}`) } }) // 监听 bootstrap.min.css CDN 请求 $.ajax({ url: $('#bs-min-css').attr('href'), type: 'get', success: () => { errMsg.push('You bootstrap.min.css CDN loading is complete') }, error: (XMLHttpRequest, textStatus, errorThrown) => { errMsg.push(`bootstrap.min.css CDN error:${textStatus} - ${errorThrown}`) } }) console.log(errMsg);
时间: 2024-04-08 08:28:33 浏览: 45
根据你提供的代码,问题出现在异步操作中。由于ajax请求是异步执行的,所以在 `console.log(errMsg)` 执行时,数组 `errMsg` 的长度可能仍然为0,因此无法正确打印数组中的元素。
要解决这个问题,你可以使用 Promise 或者回调函数来确保在所有异步请求完成后再打印数组。以下是使用 Promise 的示例代码:
```javascript
let errMsg = [];
// 监听字体外链请求
const fontRequest = new Promise((resolve, reject) => {
$.ajax({
url: $('#iconfont').attr('href'),
type: 'get',
success: () => {
errMsg.push('You iconfont CDN is up to date');
resolve();
},
error: (XMLHttpRequest, textStatus, errorThrown) => {
errMsg.push(`字体外链失效,需要更新 CDN:${textStatus} - ${errorThrown}`);
resolve();
}
});
});
// 监听 bootstrap.min.css CDN 请求
const cssRequest = new Promise((resolve, reject) => {
$.ajax({
url: $('#bs-min-css').attr('href'),
type: 'get',
success: () => {
errMsg.push('You bootstrap.min.css CDN loading is complete');
resolve();
},
error: (XMLHttpRequest, textStatus, errorThrown) => {
errMsg.push(`bootstrap.min.css CDN error:${textStatus} - ${errorThrown}`);
resolve();
}
});
});
// 等待所有异步请求完成后再打印数组
Promise.all([fontRequest, cssRequest]).then(() => {
console.log(errMsg);
});
```
这样,当所有异步请求都完成后,数组 `errMsg` 中的元素会被正确地打印出来。
阅读全文