jQuery 使用回调在 AJAX 请求中中断循环
jQuery Break loop in AJAX Request with Callback
我有点坚持我的脚本:我正在尝试通过jQuery和AJAX实时搜索我的页面。在这个例子中,我想在 2 个站点中搜索关键字,我想在找到某些内容时中断 AJAX 循环:
var urls = [
'http://docs.db-dzine.com/woocommerce-advanced-categories/',
'http://docs.db-dzine.com/woocommerce-catalog-mode/',
];
var found = false;
$.each(urls, function(i, url) {
ajaxSearchPage(url, keyword, function(found) {
console.log(found);
if(found) {
return true;
}
});
if(found) {
return true;
}
});
我不知道如何打破这里的循环...请帮忙。
还有我的 AJAX 函数:
var ajaxSearchPage = function(url, keyword, callback) {
$.ajax({
url: url,
type: "GET",
dataType: "html",
success: function(response) {
// Do not load images
var page = response.replace(/<img/gi, '<noload');
// Create parsable body for jQuery
var body = $('<div id="body-mock">' + page.replace(/^['s'S]*<body.*?>|<'/body>['s'S]*$/ig, '') + '</div>');
// Find the keyword in content
var content = body.find('#content:containsNC("'+ keyword +'")');
if(content.length > 0) {
searchResultsWrapper.show();
callback(true);
} else {
callback(false);
}
}
});
};
jQuery文档指出:
我们可以在特定迭代中打破
$.each()
循环,方法是使 回调函数return false
.返回non-false
与 在 for 循环中继续语句;它将立即跳到下一个 迭 代。
AJAX 调用是一个延迟操作,因此整个循环可能会运行。这是因为您无法知道所有网络请求何时完成。如果你看一下jQuery.ajax,你会注意到它返回了一个jqXHR对象。jqXHR 有一个abort
方法来取消网络请求。
因此,我们真正想做的是在获得所需结果后取消所有请求。为此,我们必须将请求排队,然后取消。
var ajaxQueue = [];
$.each(urls, function(i, url) {
ajaxQueue.push(ajaxSearchPage(url, keyword, function(found) {
if(found) {
ajaxQueue.forEach(jqXHR=>jqXHR.abort());
}
}));
});
相关文章:
- ajax请求的顺序总是不同的
- Meteor如何接收HTTP请求
- 有没有一种方法可以防止img get请求使用css或js发生
- 从ajax请求中获取javascript对象
- JSONP请求返回结果,但也触发error_callback
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 我如何防止错误“;未捕获(在promise中)DOMException:play()请求被对pause()的调用中断&”
- 当jQuery ajax请求中包含#时,URL中断
- 嵌套另一个 Ajax 请求时,Ajax 响应处理中断
- 如何在打开新网页时中断ajax请求
- 检测被用户操作中断的 Ajax 请求
- Jquery:上传多张图片时,发布请求中断
- Firefox操作系统-在物理硬件上中断XMLHttpRequest数组缓冲区请求
- ajax请求后,下拉菜单中断
- Javascript中断页面请求
- 美元.用ajax克隆XHR请求中断事件
- 如何处理Uncaught (in promise) DOMException: play()请求被pause()调用中断
- 当从不存在的站点请求HTTP响应时,Node.js脚本会中断
- jQuery 使用回调在 AJAX 请求中中断循环
- 为Javascript请求中断API