【发布时间】:2015-12-21 13:04:56
【问题描述】:
我想在 $http 调用之前或之后返回一个 Promise 和一个名为 output 的对象。有人可以告诉我如何使用 AngularJS 框架做到这一点,并且对于 Typescript 非常重要,这样我可以确定它工作正常吗?
topicNewSubmit = (): ng.IPromise<any> => {
var self = this;
var myData1 = { abc: 123 }
if (self.abc = 22) {
// How can I return an OKAY promise from here?
}
if (self.abc = 33) {
// How can I return an OKAY promise with myData1 from here?
}
if (self.abc = 88) {
// How can I return a FAIL promise from here?
}
return self.$http({ url: self.url, method: "GET" })
.then(
(response: ng.IHttpPromiseCallbackArg<any>): any => {
var myData2 = { abc: 245 }
// How can I return a promise and myData2.
// return(myData2) gives an error with Typescript
// How can I return a promise and no data
// return gives an error with Typescript
},
(error: ng.IHttpPromiseCallbackArg<any>): ng.IPromise<any> => {
var myData3 = { abc: 345 }
// Is this the correct way to return an unhandled reject with myData3
return self.$q.reject(myData);
});
}
【问题讨论】:
-
docs.angularjs.org/api/ng/service/$q#resolve
$q有一个resolve方法。如果您使用的是早期版本的 Angular,请使用.when。他们做同样的事情。此外,$http方法已经返回承诺。您不需要在内部使用另一个 Promise 链。 -
@ExplosionPills - 如果您有几分钟的时间,请根据我的简短代码示例添加您的 cmets 作为答案。我不太确定“$http 方法已经返回承诺。您不需要在内部使用另一个承诺链”是什么意思。我从测试中看到的一件事以及我添加 self.$q.reject 的原因是,如果我确实在没有返回的情况下处理了拒绝,那么我的 topicNewSubmit 将始终返回正常。希望这是有道理的。非常感谢。
-
我建议你让它与普通的 javascript 一起工作,然后将它移植到 typescript,并不是说将它移植到 typescript 特别难......如果你知道 typescript 那么它应该很容易。
标签: javascript angularjs typescript