У меня есть функция 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 в отладчике. Но когда я навешиваю данные, хром-отладчик ничего не показывает. –
Похоже, вы используете машинопись, но вы объявляете свой результат 'data' как' void', а не, например. 'Any'. Я не знаю наверняка, но void звучит как настоящий контент. –