jQuery.Deferred
by mifeng
HTML
<button id="toggle-state">Online</button>
<button id="perform-action">Perform Action</button>
<div id="result">
</div>
JavaScript
$(function() {
var $result = $("#result"),
dtd = $.Deferred(),
isOnline = true;
$("#toggle-state").on("click", function() {
isOnline = !isOnline;
$(this).html(isOnline ? "Online" : "Offline");
dtd = $.Deferred();
dtd.resolve(isOnline);
});
$("#perform-action").on("click", action);
function checkState() {
return dtd.promise();
}
function action() {
$.when(checkState()).done(function(state) {
$result.append((state ? "ON" : "OFF") + "LINE<br/>");
});
}
action();
});