【问题标题】:When to use .promise method in jquery [duplicate]何时在 jquery 中使用 .promise 方法 [重复]
【发布时间】:2015-10-08 13:09:17
【问题描述】:

我正在寻找$.deferred 的示例。在那个例子中他们使用.promise,我真的不明白它在那里的作用,因为没有它我会得到相同的结果,所以我想知道在哪些情况下有必要使用.promise,或者我们如何证明.promise在给定的例子中。

如果我只使用return deferred,它也可以正常工作。

function waitforms(ms){
var deferred= $.Deferred();
setTimeout(function(){
deferred.resolve(new Date())
},ms)

return deferred.promise();  // working with return deferred also
}

waitfor(2000).done(function(date){
console.log('Contrived example finished at'+ date.getTime())
})

【问题讨论】:

  • api.jquery.com/deferred.promise - 似乎解释得很好
  • 为什么有人会否决这个问题?当您对任何问题表示反对时,请努力发布解释。 +1 从我这边提问。

标签: jquery promise


【解决方案1】:

promise 是 deferred 的受保护且更有限的子集。

使用 deferred,除了.then() 等所有常规方法之外,您还可以解决或拒绝承诺。

有了 Promise,你仍然可以使用 .then() 等所有常规方法来监控 Promise 的状态,但你无法解决或拒绝它。

因此,promise 用于让人们监控操作,但不会实际触发它。你应该得到承诺并将其返回给其他人,而这是他们应该能够做的(监控它)。如果人们应该能够实际导致解决或拒绝它,您可以让人们访问延迟对象。

通常,只有 promise 应该发送到外部世界,而 deferred 应该保留在操作本身的内部。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-10
    • 2014-04-16
    • 2021-11-03
    • 2021-03-28
    • 1970-01-01
    • 2020-09-04
    • 2013-08-01
    • 1970-01-01
    相关资源
    最近更新 更多