2013-12-13 1 views
2

Я не понимаю, что определяет состояние объекта обещания. Что заставляет объект или функцию иметь состояние «ожидающий», а $ («. Selector») - состояние «разрешено».В jQuery, как .state() определяет, ожидает ли решение, разрешено или отклонено обещание

код следующим образом:

var obj = { prop: "value" }; 

var deferred = new $.Deferred(); 
var promiseObj1 = deferred.promise(obj); 
var promiseObj2 = $(".selector").promise(); 

console.log(promiseObj1.state()); // "pending" 
console.log(promiseObj2.state()); // "resolved" 
+0

Вам необходимо позвонить либо reslove/отклонить, чтобы изменить состояние обещания –

+1

как 'promiseObj1.resolve()' в случае выбора нет элементов в 'fx' очереди по умолчанию разрешено ... –

+0

см. http://jsfiddle.net/arunpjohny/9Qveq/2/ –

ответ

3

По умолчанию состояния обещания в очереди, когда он будет создан. Состояние обещания изменяется, когда отложенный объект, создавший обещание, решает/отклоняет его.

var obj = { prop: "value" }; 

var deferred = new $.Deferred(); 
var promiseObj1 = deferred.promise(obj); 
var promiseObj2 = $(".selector").promise(); 

console.log(promiseObj1.state()); // "pending" 
console.log(promiseObj2.state()); // "resolved" 

В случае promiseObj1 вы создаете обещание, но отложенный объект, созданный не является ни отвергнуто/решил, что причина в отложенном состоянии

В случае promiseObj2 (это обещание, которое будет разрешено, когда все действия, поставленные в очередь в очереди fx согласованных элементов, будут завершены), поскольку по умолчанию анимация не выполняется, считается, что она разрешена.

Демо: Fiddle

+0

@ArunPJohnny Спасибо! – Charles

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

  • Нет связанных вопросов^_^