返回false继续执行

时间:2014-12-22 07:49:26

标签: jquery arrays ajax json

我发了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
}

3 个答案:

答案 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')
    }
});

});