2014-01-29 38 views
0

有沒有方法可以確定任意js對象是角度承諾?我希望根據函數的結果是否爲承諾而有不同的行爲。我可以檢查該對象是否具有'then'功能,但有沒有更好的方法?處理可能會或可能不會承諾的數據

+1

你可以只換你的常規功能的承諾。 – elclanrs

回答

1

檢查.then()對我來說聽起來很合理,但您可能正在尋找$ q的when()。這可以讓你處理所有事情,就好像它是一個承諾,這樣你就可以規範承諾和非承諾數據的行爲。

下面是使用jQuery的承諾API(它的設置幾乎相同,更容易)的例子:Live demo (click).

var deferred = new $.Deferred(); 
deferred.resolve('some promise data.'); 
var promise = deferred.promise(); 

x = 'some regular data.'; 

foo(x); 
foo(promise); 

function foo(input) { 
    $.when(input).then(function(data) { 
    console.log(data); 
    }); 
} 
+0

非常完美!謝謝。我還沒有學過'when()'。 – xdhmoore

+0

@xdhmoore樂於幫助! – m59

相關問題