【发布时间】:2016-03-30 21:59:42
【问题描述】:
我正在将 NG 1.X 服务转换为 NG 2.0。
我的 NG 1.X 服务具有承诺链(简化):
dataService.search = function(searchExp) {
return this.getAccessToken()
.then(function(accesstoken) {
var url = $interpolate('https://my-api-url?q={{search}}&{{accesstoken}}')({search: searchExp, accesstoken: accesstoken});
return $http({
url: url,
method: 'GET',
cache: true
});
}).then(function(response) {
return response.data;
});
};
我想将 search 服务转换为 Angular 2.0 服务,使用 http 并返回 Observable。我更喜欢将 getAccessToken 服务保持不变,作为 NG 1.X 服务,它会返回一个承诺。
我正在考虑在旧的“承诺”服务上使用Observable.fromPromise。
我该怎么做?我怎样才能把这两个链接起来?
编辑:
澄清一下,我希望它是这样的:
dataService.search = function(searchExp) {
return this.getAccessToken()
.then(function(accesstoken) {
//Here I want to use:
// this.http.get(url).subscribe(() => ...)
});
};
【问题讨论】:
-
Observable.fromPromise(dataService.search)? -
这很明显。我的问题是如何从函数中返回这个值?我不能把它锁起来!
标签: javascript angularjs reactive-programming angular rxjs