我发了4个ajax调用,当找到记录123456时,它应该返回false(停止)。此外,记录123456可能存在于所有四个ajax结果中。但是,代码不是停止,而是继续执行。
var endPoint0 = '';
var endPoint1 = '';
var endPoint2 = '';
var endPoint3 = '';
$.when(
$.ajax(endPoint0),
$.ajax(endPoint1),
$.ajax(endPoint2),
$.ajax(endPoint3)
).then(pass);
function pass(a, b, c, d){
var array = [];
array.push(a[0].guides, b[0].guides, c[0].guides, d[0].guides);
$.each(array, function(index,jsonObject){
$.each(jsonObject, function(i, item){
var e = item.program_id;
if (e == 123456) {
listing(item);
return false;
} else {
console.log('no record');
}
});
});
}
function listing () {
// display output here
}
答案 0 :(得分:0)
根据Per Jquery文档http://api.jquery.com/jquery.when/
var d1 = new $.Deferred();
var d2 = new $.Deferred();
$.when( d1, d2 ).done(function ( v1, v2 ) {
console.log( v1 ); // "Fish"
console.log( v2 ); // "Pizza"
});
d1.resolve( "Fish" );
d2.resolve( "Pizza" );
您需要将回调标记为已解决。我的想法是把你的逻辑放在那里并标记它解决并使执行停止。
答案 1 :(得分:0)
我认为,问题是,你从内部each
功能块中断,但不是外部功能块。
答案 2 :(得分:-1)
您是否尝试过使用中断?因为它在循环中。
$.each(array, function(index,jsonObject){
$.each(jsonObject, function(i, item){
var e = item.program_id;
if (e == 123456) {
listing(item);
break; //return false;
}else{
console.log('no record')
}
});
});