2012-05-09 141 views
3

我正在實現一個DataAdapter來綁定到WinJS ListView控件。該接口需要一個返回Promise的getCount方法。如果我直接返回一個WinJS.xhr對象,那很好。但是,我想在將它傳回給調用者之前按摩它的響應。WinJS中的嵌套承諾

我的問題是,如果我返回相同的WinJS.xhr對象,但在它的末尾加上一個「then」,它將輸出並按摩它,那麼調用者沒有獲得預期的輸出在WinJS庫的大腦中)。

所以,我想我不明白如何返回一個承諾嵌套在承諾。有人知道怎麼做嗎?

回答

4

一旦你想出來,這很簡單。

兩件事情你需要知道:

  1. 上一個承諾。然後調用()返回一個新的承諾,
  2. 傳遞給那麼函數的返回值將成爲新的承諾的價值。

所以,做你想要完成的任務,它是這樣的:

return WinJS.xhr({url: whateverYourURlIs }) 
    .then(function (response) { 
     var tweakedResponse = processResponse(response); 
     return tweakedResponse; 
    }); 
+0

其實,這也正是我怎麼想它的工作,但在構建一個特定的錯誤,我用這導致調用我的函數的方法不會消耗諾言。但是,是的,這與你所說的一樣直截了當。 –