【发布时间】:2014-11-14 00:31:22
【问题描述】:
我有一个具有 $http(async task) 的工厂方法,所以我使用了 $q 承诺并且发生了以下错误 TypeError: object is not a function @line: return $q(funtion....)
使用 Promise API 编写:
service.fetch = function(query) {
return $q(function(resolve, reject){
$http({ url: srcset[query], method: 'GET'}).success(function(db){
resolve(db);
});
});
};
但如果使用 Deferred API 编写:
service.fetch = function(query) {
var deferred = $q.defer();
$http({ url: srcset[query], method: 'GET'}).success(function(db){
deferred.resolve(db);
});
return deferred.promise;
};
效果很好
我写的和https://docs.angularjs.org/api/ng/service/$q中提到的完全一样
谁能指出我哪里出错了。
【问题讨论】:
-
角度版本差异? code.angularjs.org/1.2.25/docs/api/ng/service/$q 不一样
-
好的,我提到的文档是 1.3 版本,但我使用的是 1.2.25。非常感谢,请将其发布为许多人可能会犯此错误的答案
-
为您添加了答案,以便我们将其标记为已解决