处理可能是也可能不是承诺的数据

时间:2014-01-29 01:00:02

标签: javascript angularjs promise

有没有办法确定任意js对象是否是角度承诺?我想根据函数的结果是否是一个承诺而有不同的行为。我可以检查对象是否具有'then'功能,但是有更好的方法吗?

1 个答案:

答案 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);
  });
}