2016-04-08 13 views
0

jQuery: deferred.then()jQuery Ertelenmiş Resmi Örnek: Sonra() diye düşündüm

'defer.resolve (5)' sonra 'filtered.done()' doğrudur, fakat her ikisi de aynı sonuca neden. gidermek yaşandığında, kayıtlı işleyicileri yürütülür - Eğer `resolve` yaptığınızda

var filterResolve = function() { 
    var defer = $.Deferred(), 
    filtered = defer.then(function(value) { 
     return value * 2; 
    }); 

    defer.resolve(5); 

    filtered.done(function(value) { 
    $("p").html("Value is (2*5 =) 10: " + value); 
    }); 
}; 

var filterResolve = function() { 
    var defer = $.Deferred(), 
    filtered = defer.then(function(value) { 
     return value * 2; 
    }); 

    filtered.done(function(value) { 
    $("p").html("Value is (2*5 =) 10: " + value); 
    }); 

    defer.resolve(5); 
}; 
+0

O madde, yani vaat bütün mesele değildir . Çözüm, geçmişte zaten gerçekleşmişse, işleyici hemen çalıştırılır (muhtemelen sıraya alınır). –

+0

İşlevler eşzamansızdır, bu nedenle ilk ertelemeyi – Lulylulu

+0

@ Chips_100 çözdüğünüz zaman farketmez. Haklısın. Bunu işaret ettiğin için teşekkürler. –

cevap

0

var defer = $.Deferred(), 
 
    filtered = defer.then(function(value) { 
 
     return value * 2; 
 
    }); 
 

 
defer.resolve(5); 
 
    
 
$("button").on("click", function(){ 
 
    filtered.done(function(value) { 
 
    $("p").html("Value is (2*5 =) 10: " + value); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<button>Filter Resolve</button> 
 
<p></p>

İlgili konular