通过两个服务连接一个承诺
Connecting a promise through two services
我对angular有点陌生,我正在尝试理解如何将一个承诺与两个服务一起使用。
在下面的App.js代码中,我调用FirstService.get(),它应该等待RestService返回结果。在App.js中,我想使用.then()来等待FirstService.get()的结果。
我的问题是我需要如何在第一服务中设置承诺,以便我可以在App.js中使用.then() ?
谢谢!
// App.js
FirstService.get().then(function(promise) {
// do something here with the result
}, function(response) {
console.log('error');
});
//First Service
oApp.service( 'FirstService', function( RestService, $localStorage, $q ) {
this.get = function( ) {
var url = o.buildServerUrl();
// Retrieve info
RestService.get(url, function(response) {
return response;
});
};
});
// Rest Service
oApp.service( 'RestService', function( $rootScope, $http ) {
this.get = function ( url, callback ) {
try {
$http.get(url).
success(function(data, status, headers, config) {
var response = o.processServerResponse(data, status);
callback(response);
}).
error(function(data, status, headers, config) {
var response = o.processServerResponse(data, status);
callback(response);
});
}
catch(err) {
var response = o.createExceptionResponse(err.message);
callback(response);
}
}
});
应该这样做:
// App.js
FirstService.get().then(function(promise) {
// do something here with the result
}, function(response) {
console.log('error');
});
//First Service
oApp.service( 'FirstService', function( RestService, $localStorage, $q ) {
this.get = function( ) {
var deferred = $q.defer();
var url = o.buildServerUrl();
// Retrieve info
RestService.get(url, function(response) {
deferred.resolve(response);
});
return deferred.promise;
};
});
// Rest Service
oApp.service( 'RestService', function( $rootScope, $http ) {
this.get = function ( url, callback ) {
try {
$http.get(url).
success(function(data, status, headers, config) {
var response = o.processServerResponse(data, status);
callback(response);
}).
error(function(data, status, headers, config) {
var response = o.processServerResponse(data, status);
callback(response);
});
}
catch(err) {
var response = o.createExceptionResponse(err.message);
callback(response);
}
}
});
相关文章:
- 通过共享服务在两个不同ng应用程序中的控制器之间共享数据
- Angular 2:当第一个服务成功时,两个后端服务调用
- 如何在两个连续的角度服务呼叫期间中止/取消第一个呼叫的承诺
- 将单个服务逻辑应用于两个类似的按钮
- 开发两个单独的节点应用程序来提供 Web 服务和使用 Web 服务以在浏览器上呈现它是一个好主意吗?
- 在两个不同的模块和两个不同的js文件之间共享服务
- 发布绑定/监视两个控制器之间共享的服务变量
- 为什么我的两个不同angularjs服务解析为同一个restful Java EE web服务
- 将一个服务(工厂)注入到另一个服务中,这两个服务都是异步的
- 同步与服务链接的两个AngularJS控制器
- 如何在AngularJS中将数据从同一服务加载到两个不同的作用域变量
- asp.net→javascript→网络服务→从webservice调用返回两个类
- 如何将js从两个独立的服务精简到前端协同工作
- 用jasmine对位于不同模块的两个服务进行单元测试
- 使用node/express/jade,如何服务两个javascript文件中的一个,取决于第一个是否存在
- AngularJS:通过服务在两个作用域/控制器之间进行双向通信
- AngularJS:如何在两个隔离的控制器和一个共享服务之间创建一个双向数据绑定
- Azure移动服务-读取两个表并返回自定义响应对象
- 两个Node服务器可以同时运行并交互吗,这样其中一个服务器就是为客户端服务的中介
- 通过两个服务连接一个承诺