如何在$ http调用中指定错误或成功后执行的函数?
这是我的代码:
topicsRetrieve = (): ng.IPromise<any> => {
var self = this;
var defer = self.$q.defer();
var url = "/api/Topic/Retrieve/" +
self.sus.subject.id;
self.topicHttp = true;
self.$http({
method: "GET",
url: self.ac.dataServer + url
})
.then(
(response: ng.IHttpPromiseCallbackArg<ITopic[]>): any => {
self.topics = angular.copy(response.data);
self.topicsBase = angular.copy(response.data);
return this.$state.go('home.subjects.subject.admin.topics', {
subjectId: self.sus.subject.id
});
},
(error): any => {
self.topics = null;
self.topicsBase = null;
defer.reject(error);
}
)
return defer.promise;
}
我想要的是能够在$ http呼叫完成后设置self.topicHttp = false
,即使$ http呼叫失败。
也可以请某人确认这是我回复此功能承诺的正确方法。我添加了代码,它似乎可以工作,但我想确保我以正确的方式做到这一点。
答案 0 :(得分:0)
您可以使用第二个topicsRetrieve = (): ng.IPromise<any> => {
var self = this;
var defer = self.$q.defer();
var url = "/api/Topic/Retrieve/" +
self.sus.subject.id;
self.topicHttp = true;
self.$http({
method: "GET",
url: self.ac.dataServer + url
})
.then(
(response: ng.IHttpPromiseCallbackArg<ITopic[]>): any => {
self.topics = angular.copy(response.data);
self.topicsBase = angular.copy(response.data);
return this.$state.go('home.subjects.subject.admin.topics', {
subjectId: self.sus.subject.id
});
},
(error): any => {
self.topics = null;
self.topicsBase = null;
defer.reject(error);
}
)
.then(
(value): any => {
self.topicHttp = false
}
)
return defer.promise;
}
函数在成功或错误案例后运行最终代码。我在演示中使用了javascript,你可以尝试一下,但是你可以看看你的版本的以下代码。
int func()
{
cout << "aep" << endl;
return 0;
}
int main() {
int sp;
int (*k)() = *****func;
k();
return 0;
}