【问题标题】:Dynamically assigning var to json将 var 动态分配给 json
【发布时间】:2018-12-08 16:45:45
【问题描述】:

我在 .ts 文件中有一个变量 var locations,并希望它等于同一文件夹中的一个 json 对象。换句话说,.json 文件每 5 秒更改一次,我需要更新变量。我认为他 rxjs 可观察是他们要走的路。我试过了

ngOnInit() {
    timer(0, 7000).pipe(
      switchMap( _ => this.hawkerservice.fetchNews()
    )).pipe(
      map((ret:any) => {
       this.locations = ret 
      })
    ).subscribe();
  }

现在这很好用,除了 .fetchNews() pull 是在一个端口上:

export class MapjsonService{
  theUrl = 'http://localhost:8000/locations.json';
  constructor(private http: HttpClient) { }

  fetchNews(): Observable<any>{
    return this.http.get(this.theUrl)
  }

}

所以我的问题是在不通过端口传递 json 对象的情况下最好的方法是什么。即,只是在本地获取它。

谢谢

【问题讨论】:

  • 你的选择真的很有限。您可以通过拉取(您当前的使用)或通过 websocket 从服务器推送来通过 http 获取文件。
  • 我不想这样做stackoverflow.com/questions/44042223/…,因为没有http的更简单的解决方案会更好
  • @SandraWillford 像这样接缝是 Angular 应该具备的基本功能。如果 http 已经在我的本地机器上,那么使用它会很反直觉。
  • 这不是 Angular 问题,这是 Javascript。您可以通过 http get 或 push 读取 JSON 文件。另一种选择是使用导出的对象而不是 json,但是您仍然需要在计时器上读取它。
  • 您是否尝试提供相对路径?它的行为如何?

标签: json angular rxjs


【解决方案1】:

嗯,就这么简单。您的文件只是另一个资源,托管在locallyserver 上。您确实需要http 才能访问它,因为它是托管的。

与你的观点相矛盾,你不能简单地运行你的application而不使用http,即使它托管在locally上。同样适用于json 文件。 您需要http 才能访问该文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2012-10-14
    相关资源
    最近更新 更多