我的服務類包含代碼:爲什麼我們在將其轉換爲Promise之前不需要訂閱可觀察的內容?
Service.ts
//all imports are done
@Injectable()
export class Service{
constructor(private http: Http) { }
getGoogle():Observable<any> {
console.log("Inside service");
return this.http.get('https://jsonplaceholder.typicode.com/posts/1');
}
}
我的頁面組件,我使用的服務。
Page.ts
//all imports are done
export class Page1{
constructor(private service: Service, private navCtrl: NavController) { }
async get() {
console.log("inside get method");
const data = await this.service.getGoogle().toPromise();
console.log('The response is' , data);
}
}
我已經得到了需要的結果,但因爲懂得觀測量和觀測的概念,我可觀測應該有一個觀察坐在subscribe.Then爲什麼should'nt的代碼常量data = await this.service.getGoogle.subscribe().toPromise()
不在這裏工作了,並顯示錯誤property toPromise() does not exists on type Subscription.
我看到的toPromise()官方資源在那裏我發現它使用.just().toPromise()
。然後我發現.just()
API其中規定即
just()方法發出其參數作爲OnNext通知,然後在 之後,它發出一個OnCompleted通知。
所以它使用的訂閱功能在這裏,爲什麼它不使用.subscribe()
?
因爲'toPromise'是一個'Observable'調用 - 不是'Subscription' - 和'toPromise'進行訂閱。 – cartant
此外,您問題中的鏈接引用了RxJS 4文檔。在Angular中使用的RxJS 5 - - 文檔是[here](http://reactivex.io/rxjs/)。 – cartant