小编use*_*867的帖子

在角度2中设置可观察变量

我们要做的是从URL调用一个端点,该URL返回2个变量,这些变量可以在站点的多个部分中使用。尽管我们正在使用http调用并订阅它,但是为了加快站点速度,我们只想进行一次api调用。为此,我们在服务上创建了一个Observable。服务会在构造函数中调用一个函数,该函数设置Observable的值,但是有时在直接访问链接时会返回无法预订的undefined方法。下面是使用Microsoft ADAL库的示例代码:

首先,我们在服务中将变量设置为Observable:

@Injectable()
export class MicrosoftGraphService {
  public details: Observable<any>;
Run Code Online (Sandbox Code Playgroud)

然后我们在构造函数中设置可观察值:

constructor(
private _http:Http,
private _adalService: AdalService,
private _sanitizer:DomSanitizer
) {

this.getToken().subscribe(token => {
  /**
   * Get me data from graph to determine school_id and mis_id
   */
  this.get('me', token, true).subscribe(me => {
    this.details = new Observable(observer => {
        observer.next({
          me: me
        });
        observer.complete();
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

getToken函数为:

getToken(): Observable<any> {
    return this._adalService
      .acquireToken( this._adalService.config.endpoints.graph );
}
Run Code Online (Sandbox Code Playgroud)

get函数是:

get( endpoint, token, beta = false ): Observable<any>  {
  return this._http.get( this._adalService.config.endpoints.graph …
Run Code Online (Sandbox Code Playgroud)

javascript rxjs angular2-observables angular

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

angular ×1

angular2-observables ×1

javascript ×1

rxjs ×1