2016-04-08 5 views
0

jQuery: deferred.then()jQueryの繰延公式例:その後、()私は思っ

'defer.resolveは(5)' の後に 'filtered.done()' 正しいのですが、両方とも同じ結果を持っている理由。

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

あなたは 'resolve'を行うとき、それは問題ではない、それは約束の全体のポイントだ - 決意が発生したときに、登録したハンドラが実行されています。解決がすでに過去に発生した場合、ハンドラはすぐに実行されます(キューに入れられた可能性もあります)。 –

+0

関数は非同期なので、最初の遅延を解決するときは問題ありません – Lulylulu

+0

@ Chips_100。あなたが正しいです。それを指摘してくれてありがとう。 –

答えて

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>

関連する問題