我不明白是什么决定了一个承诺对象的状态。是什么导致对象或函数具有“pending”状态,而$(“。selector”)具有“已解决”状态。
代码如下:
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 :(得分:2)
默认情况下,承诺的状态在创建时处于待处理状态。当创建承诺的延迟对象解析/拒绝承诺时,承诺的状态会发生变化。
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