2016-03-20 27 views
0

, sayfa yüklenirken data-id özelliklere sahip 12 madde bir dizi showcaseIds içine itilir 12 madde), currentItemId null olduğu gibi, daha fazla öğe yüklemek istiyorum, ajax çağrısının bitmesini bekleyin, sayfadaki tüm yeni kimlikleri bittikten sonra diziye aktarın, sonra kullanıcının devam etmesine izin verin.

$("body").keydown(function(e) { 

    index = showcaseIds.indexOf(currentItemId); 
    cacheCurrent = currentItemId; 

    if (e.keyCode == 37 || e.keyCode == 39){ 
     if(e.keyCode == 39) { // right 
     currentItemId = showcaseIds[index + 1]; 
     if (currentItemId == null){ 
      $.when(
      loadMore() 
     ).then(function(){ 
      index = showcaseIds.indexOf(cacheCurrent); 
      currentItemId = showcaseIds[index + 1]; // undefined 
      }); 
     } else { 
      // continue as normal 
     } 
     } 
    } 
}); 

function loadMore() { 
    $.when(
    $.ajax({ 
     // 
    }) 
).then(function(){ 
    pushShowcaseIds(); 
    }); 
} 

Ancak loadMore() fonksiyon denir sonra $ .when.then yılında currentItemId tanımsız ve bunu alert zaman, anında çıkageldi.

Yani, ajax çağrısının bitmesini beklemek yerine, then() anında çalışıyor gibi görünüyor. Bunun "yuvalanmış" $ ile bir şey olduğunu varsayalım. O zaman() s, ama emin değilim.

+0

loadMore' 'in ifadesini dönen deneyin:' ... did it ' – bumpy

+0

$ .her dönüş! Teşekkürler, cevabını göndermelisiniz – frosty

+0

Harika :) yanıtı yayınlandı – bumpy

cevap

0

Sadece loadMore içindeki ifadeyi dönmek için unuttum:

function loadMore() { 
    return $.when(
    $.ajax({ 
     // 
    }) 
).then(function(){ 
    pushShowcaseIds(); 
    }); 
}