2014-01-29 4 views
0

Есть ли способ определить, является ли произвольный объект js угловым обещанием? Я хотел бы иметь другое поведение, основанное на том, является ли результат функции обещанием. Я могу проверить, имеет ли объект функцию «then», но есть ли лучший способ?Обработка данных, которые могут быть или не быть обещанием

+1

Вы можете просто обернуть свою обычную функцию в обещании. – elclanrs

ответ

1

Проверка на наличие .then() звучит разумно для меня, но вы можете искать $ q's when(). Это позволит вам обрабатывать все, как если бы это было обещание, чтобы вы могли нормализовать поведение обещающих и не обещающих данных.

Вот пример использования обещание API JQuery (это почти идентично и проще в настройке): 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

Смежные вопросы