PROMISE解决AJAX中的串行和并行
在JavaScript中,你可以使用Promise来解决AJAX请求的串行和并行执行。以下是一些示例代码:
串行执行AJAX请求:
function makeRequest(url) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
resolve(xhr.responseText);
} else {
reject(new Error(xhr.statusText));
}
}
};
xhr.send();
});
}
// 使用
makeRequest('url1.com').then(function(response) {
console.log(response);
return makeRequest('url2.com');
}).then(function(response) {
console.log(response);
// 更多的串行请求...
}).catch(function(error) {
console.error('请求失败:', error);
});
并行执行AJAX请求:
Promise.all([
makeRequest('url1.com'),
makeRequest('url2.com')
]).then(function(results) {
console.log(results[0]); // 来自第一个请求的响应
console.log(results[1]); // 来自第二个请求的响应
// 更多的并行请求...
}).catch(function(error) {
console.error('至少一个请求失败:', error);
});
在这些示例中,makeRequest
函数返回一个Promise,它在AJAX请求完成时通过调用resolve
或在请求失败时通过调用reject
来处理。然后你可以使用.then()
和.catch()
方法来处理Promise的结果或捕获错误。在串行执行的情况下,你可以使用链式调用,在并行执行的情况下,你可以使用Promise.all()
。
评论已关闭