2013-01-19 64 views
1

我一直在玩$.Deferredpromise()的,並且注意到幾乎所有的jQuery方法都有promise方法,所以我想知道該承諾的其他用途。到目前爲止,我知道它可以用在:所有jQuery推遲/承諾可能的用途

  • 動畫(animatefadeInfadeOutfadeTohideshow等)
  • AJAX($.ajax$.post$.get$.getJSON等)
  • setTimeout函數(resolve手動調用其中一個函數)
  • Queue like實現(按順序執行命令,可以有其他回調插入)
+1

那麼,真的是任何異步操作。只需編寫一個在本地回調中執行'.resolve()'/'.reject()'的包裝器。例如。 IndexedDB,F​​ileSystem API,Web Workers。 – pimvdb

回答

0

我翻翻了源代碼。看起來你唯一錯過的是$.ready.promise()。這似乎將JQuery的主要準備事件視爲承諾,因此從一開始就可以編寫:

$.ready.promise() 
.then(function() { return $.ajax({ ... }); }) 
.then(function(data) 
    { 
     // do something with data 
    }) 
.fail(function() 
    { 
     // handle errors 
    });