javascript - 在 jQuery 中,.state() 如何确定 Promise 是待处理、已解决还是已拒绝

标签 javascript jquery promise deferred

我不明白是什么决定了 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/

相关文章:

javascript - promise 链是否保证仅在前一个 promise 完成后才调用下一个 promise 的回调?

javascript - 如何从 javascript/typescript 模块文件(导入/导出)访问 Vuex 存储?

c# - 如果日期大于 MM/10/YYYY,则日期选择器日期返回 Null

javascript - Bootstrap Datepicker定位不起作用

javascript - 在 Bootstrap Popover 中放置 JavaScript 内容

javascript - 无法读取未定义 TypeError 的属性 'subscribe'

javascript - 从嵌套的 Promise.all 返回值

javascript - Foundation 5 topbar - 在移动设备上禁用 JS 菜单折叠

javascript - JavaScript 中的 Beget 函数 : The Good Parts

javascript - onclick 和 onfocus 上的 HTML 元素类型更改在 IE 浏览器中不起作用