gpt4 book ai didi

javascript - Angular 2.0 - 将 promise 链转换为 Observables

转载 作者:数据小太阳 更新时间:2023-10-29 04:33:22 28 4
gpt4 key购买 nike

我正在将 NG 1.X 服务转换为 NG 2.0。

我的 NG 1.X 服务有 promise 链(简化):

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 服务,它返回一个 promise 。

我正在考虑在旧的“promise”服务上使用 Observable.fromPromise

我该怎么做?我如何链接这两个?

编辑:

澄清一下,我希望它是这样的:

dataService.search = function(searchExp) {
return this.getAccessToken()
.then(function(accesstoken) {
//Here I want to use:
// this.http.get(url).subscribe(() => ...)
});
};

最佳答案

您应该使search 方法返回Observable 对象。像这样:

dataService.search = function(searchExp) {

var promise = new Promise((resolve, reject) => {
this.getAccessToken()
.then(accesstoken => {
return this.http.get('data.json')
.map(response => response.json())
.subscribe(data => resolve(data), err => reject(err))
})
});

return PromiseObservable.create(promise); // Observable.fromPromise(promise)
};

关于javascript - Angular 2.0 - 将 promise 链转换为 Observables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34453093/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com