2017-05-06 55 views
0

我的方法中存在控制流问题。我怎样才能等待来自服务器的数据?是否有可能在服务的构造函数中准备数据,并在注入后在所有组件中以单例形式获取数据?键入脚本从服务器获取同步数据

import { Permission } from '../_models/Permission'; 
import { Injectable, OnInit } from "@angular/core"; 
import { AuthService, AppHttpService } from '../_services/index'; 
import { RequestActionType } from '../_models/RequestActionType'; 


@Injectable() 
export class PermissionService { 

    private getUrl: string = "/Permission/GetAllPermissions"; 
    private permissions: Permission[] = []; 

    constructor(private httpService: AppHttpService, private authService: AuthService) { 

     this.PreparePermissionData(); 
    } 

    public PreparePermissionData() { 
     if (this.authService.loggedIn()) { 
      this.httpService.authGet(this.getUrl).then(response => { 
       this.permissions = response.Data as Permission[]; 
      }); 
     } 
+0

https://basarat.gitbooks.io/typescript/docs/promise.html – Roljhon

+0

[Angular 2 - 直接从Observable返回数据]的可能副本(http://stackoverflow.com/questions/37867020/angular- 2-return-data-directly-from-an-an-observable) – jonrsharpe

+0

另外,教程中有关于通过HTTP获取数据的整个部分(https://angular.io/docs/ts/latest/tutorial/toh-pt6.html )。 – jonrsharpe

回答

0
import { Injectable } from '@angular/core'; 
import { Http, Response } from '@angular/http'; 
import {Observable} from 'rxjs/Observable' 

export class MyService { 
    private getUrl:string = "/Data/GetData" 
    constructor(private http: Http) { } 

    public DoSomething(){ 
    let myData = []; 

    this.http.get(this.getUrl).map(res => res.json()).subscribe(data => { 
     this.somethingWithData(data) 
    }); 

    } 
    public somethingWithData(data) { 
    //do anything here with data 
    } 
} 
0

是否有可能在服务的构造函数中准备数据,并把它在单中的所有组件后注入?