Я взял следующий код из docs:Изменение отложенного при его возврате?
function asyncEvent() {
var dfd = new jQuery.Deferred();
// Resolve after a random interval
setTimeout(function() {
dfd.resolve("hurray");
}, Math.floor(400 + Math.random() * 2000));
// Reject after a random interval
setTimeout(function() {
dfd.reject("sorry");
}, Math.floor(400 + Math.random() * 2000));
// Show a "working..." message every half-second
setTimeout(function working() {
if (dfd.state() === "pending") {
dfd.notify("working... ");
setTimeout(working, 500);
}
}, 1);
// Return the Promise so caller can't change the Deferred
return dfd.promise();
}
// Attach a done, fail, and progress handler for the asyncEvent
$.when(asyncEvent()).then(
function(status) {
alert(status + ", things are going well");
},
function(status) {
alert(status + ", you fail this time");
},
function(status) {
$("body").append(status);
}
);
Я очень нуб в понимании отложенное обещают с линией:
// Return the Promise so caller can't change the Deferred
return dfd.promise();
Ладно, я понял, что мы не можем изменить разрешение или отклонение свойства объекта Отсрочка.
Но с использованием return dfd
, чем return dfd.promise()
, вызывающий может изменить отложенный объект. Я не мог найти в дикой природе. Можете ли вы привести пример (ясное понятие), если я вернусь вместо отложенного (просто чтобы узнать об этом правильно)?
Измененный ответ соответственно. – Kelsadita
Проверьте эту ссылку: http://www.mattgreer.org/articles/promises-in-wicked-detail/ – Kelsadita
Но, кажется, я читал этот блог раньше ... –