我不明白是什么决定了 Promise 对象的状态。是什么导致对象或函数处于“待处理”状态,而 $(“.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"
最佳答案
默认情况下,创建 Promise 时其状态为待处理。当创建 Promise 的延迟对象解析/拒绝它时,Promise 的状态就会改变。
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
,您正在创建一个 promise ,但创建它的延迟对象既没有被拒绝/解决,这就是挂起状态的原因
在 promiseObj2
的情况下(这是一个 promise ,当匹配元素的 fx 队列中排队的所有操作完成时将得到解决),因为默认情况下没有正在进行的动画视为已解决。
演示:Fiddle
关于javascript - 在 jQuery 中,.state() 如何确定 Promise 是待处理、已解决还是已拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20559992/