何时在jquery中使用.promise方法

时间:2015-07-19 07:52:39

标签: jquery promise

我正在寻找$.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())
})

1 个答案:

答案 0 :(得分:1)

承诺是受延保的受保护且更有限的子集。

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

有了承诺,您仍然可以使用.then()之类的所有常规方法来监控承诺的状态,但是您无法解决或拒绝承诺。

因此,承诺用于让人们监控操作,但实际上不会触发它。你应该得到承诺,并在他们应该做的所有事情(监控它)时将其归还给其他人。您可以让人们有权访问延迟对象,如果他们应该能够真正解决或拒绝它。

通常情况下,只有承诺应该传递到外部世界,并且延迟应该保留在操作本身的内部。