你可以在Angular 2(使用Typescript)中返回一个observable作为一
发布时间:2020-12-17 17:06:15 所属栏目:安全 来源:网络整理
导读:参见英文答案 Rxjs toPromise behavior different than observable????????????????????????????????????1个 我正在学习使用Angular 2和Typescript在Ionic 2中进行开发. 我立即尝试的是创建一个函数,该函数返回一个在观察到的变量发生变化时得到解决的promis
参见英文答案 >
Rxjs toPromise behavior different than observable????????????????????????????????????1个
我正在学习使用Angular 2和Typescript在Ionic 2中进行开发. 我立即尝试的是创建一个函数,该函数返回一个在观察到的变量发生变化时得到解决的promise. 这对我来说很有用,可以在页面组件尝试使用它之前检测提供程序中的初始化是否已完成.例如 api.isInitialized() .then(() => { //api provider is initialized. Now safe to call it! return api.fetch("NEWS"); }); .then((newsData) => { //do something with newsData }); 我有以下导入: import 'rxjs/add/operator/map'; import 'rxjs/add/operator/toPromise'; import { Observable} from 'rxjs/Observable'; 只是为了检查我对如何使用促销的理解,我尝试调用以下函数.我只得到“testObservable已经改变”. 如何更改testObservable以获得已解决的承诺? observerTest(){ let testObservable: any; let testObserver: any; testObservable = Observable.create(observer => { testObserver = observer; }); let myPromise = testObservable.toPromise(); testObservable.subscribe(data => { console.log("testObservable has changed."); console.log(data); }); myPromise.then(() =>{ console.log("promise resolved."); }); testObserver.next(true); } 解决方法
官方
Angular tutorial包含示例,尤其是在
HTTP chapter中.例如:
getHeroes(): Promise<Hero[]> { return this.http.get(this.heroesUrl) .toPromise() .then(response => response.json().data as Hero[]) .catch(this.handleError); } 和 delete(id: number): Promise<void> { const url = `${this.heroesUrl}/${id}`; return this.http.delete(url,{headers: this.headers}) .toPromise() .then(() => null) .catch(this.handleError); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |