我正在寻找$.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())
})
答案 0 :(得分:1)
承诺是受延保的受保护且更有限的子集。
除了.then()
之外的所有常规方法,您可以使用延迟来解决或拒绝承诺。
有了承诺,您仍然可以使用.then()
之类的所有常规方法来监控承诺的状态,但是您无法解决或拒绝承诺。
因此,承诺用于让人们监控操作,但实际上不会触发它。你应该得到承诺,并在他们应该做的所有事情(监控它)时将其归还给其他人。您可以让人们有权访问延迟对象,如果他们应该能够真正解决或拒绝它。
通常情况下,只有承诺应该传递到外部世界,并且延迟应该保留在操作本身的内部。