Dar*_*g8r 6 javascript angularjs typescript
所以,我有一个Angular应用程序可以对服务器进行调用.有一个服务包装了对服务器的调用.我目前在服务上有一个方法,它只是从$ http服务返回promise.我想在该方法调用上添加一些额外的处理,但由于promise的异步性质,我不知道该怎么做.
目前在打字稿中:
class BoardService {
private $http;
constructor($rootScope: IRootScope, $http: ng.IHttpService) {
this.$http = $http;
}
fetchBoard(id: number) {
return this.$http.get("/api/board/" + id);
}
}
Run Code Online (Sandbox Code Playgroud)
我想得到这样的东西:
fetchBoard2(id: number) {
this.$http.get("/api/board/" + id).success(function(data)
{
// Manipulate the data
});
// return manipulated data;
}
Run Code Online (Sandbox Code Playgroud)
你会怎么做?
Kri*_*ján 10
棘手的句子警告!因为promises是异步的,所以根据promise中的数据返回数据的任何东西本身都必须返回一个promise.您希望fetchBoard2返回一个承诺,一旦$http承诺回来并且您操纵了数据,该承诺就会得到解决.你可以使用Angular的$q服务.
fetchBoard2(id: number) {
var deferred = $q.defer();
$http.get("/api/board/" + id).success(function(data) {
var newData = doSomething(data);
deferred.resolve(newData);
});
return deferred.promise;
}
Run Code Online (Sandbox Code Playgroud)
管理额外的延迟对象变得非常繁琐,因此您可以使用then将自己的操作插入到管道中.
fetchBoard3(id: number) {
return $http.get(...).then(function(data) {
return doSomething(data);
});
}
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅这篇文章.
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |