【发布时间】:2015-11-06 00:12:53
【问题描述】:
我有一个 javascript 函数,对于这个问题我已经简化了。它实际上对从 $http 调用中检索到的数据做了一些事情,然后我希望这些数据与调用它的函数的承诺一起可用:
getTopics = (queryString: string) => {
var self = this;
var defer = self.$q.defer();
self.$http({
// cache: true,
url: self.ac.dataServer + '/api/Topic/GetMapData' + queryString,
method: "GET"
})
.success((data) => {
var output: ITopics = {
details: data
}
// output is correctly populated with data
defer.resolve(output);
// I also tried this and it get seen in the calling function either
// defer.resolve('abc');
})
return defer.promise;
};
这样称呼它:
return topicService.getTopics("/" + subjectService.subject.id)
.then((data) => {
// data seems to be not defined
var x = data;
});
谁能告诉我我可能做错了什么。我认为解析也会返回数据,但似乎没有这样做。
【问题讨论】:
-
您确定正在调用
success吗?也尝试删除: void -
是的,它在调试器中的 var x = data 处停止。但是当我将鼠标悬停在数据上时,chrome 调试器不显示任何内容。
-
看起来您正在使用打字稿,但您将
data结果声明为void而不是例如any。我不确定,但 void 听起来没有真正的内容 -
我删除了 : void 还是一样。它转到 var x = data 但数据什么也没显示。如果我检查另一点并查看输出,它会正确填充数据
-
可能是因为您忘记了 topicService 中 '{' 的结束标记。尝试在 var x = data 之后添加 '}';
标签: javascript angularjs typescript angular-promise angular-http