2013-06-02 78 views
-1

以下幾點有什麼區別?

var getPromise=$.get('/query'), 
     postPromise = getPromise.done(function(data){ 
       return $.post('/search',data); 
     }); 

var getPromise = $.get('/query'); 
var postPromise = getPromise.pipe(function(data){ 
    return $.post('/search',data); 
}); 

任何人都可以解釋我的區別之間困惑?

+0

如果這是整個代碼,那麼沒有區別。否則,您可能需要閱讀有關.done和.pipe的文檔:http: –

+0

'pipe'是一個延遲命令,它返回一個新的承諾,通過函數過濾延遲的狀態和值。這被jquery 1.8的'then'方法取代。 – karthikr

+1

也許這可以幫助你:[什麼時候應該使用jQuery延遲的「then」方法,什麼時候應該使用「管道」方法?](http://stackoverflow.com/q/9583783/218196)。 –

回答

0

在第一種情況下postPromise === getPromise.done返回相同的延遲對象。

.pipe.then創建一個新的延遲實例。

+0

實際上'.pipe()'或'.then()'返回一個新的* Promise *,而不是* Deferred *,儘管這個區別通常是學術性的。 –