2016-04-08 3 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

Функции async, поэтому не имеет значения, когда вы разрешаете первый отложенный – 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>

Смежные вопросы