在jQuery中,.state()如何确定一个承诺是挂起的、已解决的还是被拒绝的

In jQuery, how does .state() determine whether a promise is pending, resolved or rejected

本文关键字:挂起 解决 拒绝 一个承诺 jQuery state 何确定      更新时间:2023-09-26

我不明白是什么决定了承诺对象的状态。是什么导致对象或函数的状态为"挂起",而 $(".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"

默认情况下,承诺在创建时处于挂起状态。当创建承诺的延迟对象解析/拒绝承诺时,承诺的状态会发生变化。

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 队列中排队的所有操作都完成时,它将解决(,因为默认情况下没有正在进行的动画,因此被视为已解决。

演示:小提琴