有没有办法确定任意js对象是否是角度承诺?我想根据函数的结果是否是一个承诺而有不同的行为。我可以检查对象是否具有'then'功能,但是有更好的方法吗?
答案 0 :(得分:1)
检查.then()
听起来对我来说是否合理,但您可能正在寻找$ q when()
。这将允许您处理所有内容,就好像它是一个承诺,这样您就可以规范承诺和非承诺数据的行为。
以下是使用jQuery的promise 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);
});
}