我刚刚根据 jhon papa 的例子创建了示例应用程序。(快速启动程序)。 我设计了服务类来从我的休息服务 http://localhost:8081//Myserver/rest/heros
获取json数据import { Injectable } from '@angular/core';
import { Http, Response , Headers} from '@angular/http';
import 'rxjs/add/operator/toPromise';
import { Hero } from './hero';
import { Code } from './code';
import { HEROES } from './mock-heroes';
@Injectable()
export class HeroService {
constructor(private http: Http) { }
private heroesUrl = 'http://localhost:8081//Myserver/rest/heros'; // URL to web api
getHeroes() {
return this.http.get(this.heroesUrl)
.toPromise()
.then(
response => response.json() as Hero[])
.catch(this.handleError);
}
getHero(id: number) {
return this.getHeroes()
.then(heroes => heroes.find(hero => hero.id === id));
}
private handleError(error: any) {
console.error('An error occurred', error);
return Promise.reject(error.message || error);
}
}
服务类工作正常,英雄也在UI中列出(这里忘记了CROS orgin问题)。但我在这里注意到的一件事是 http://localhost:8081//Myserver/rest/heros 的其余调用直接从浏览器发送(我可以在Developer工具的网络选项卡中看到它)。
根据我的应用程序,它不应该从浏览器发送,而是应该像JSF中的后端bean类一样进行处理,然后将数据提供给相关的Component。我相信这也将解决我的CROS orgin问题。剂量Angular2有这样的选择吗?请提出正确的方法来实现它。
答案 0 :(得分:0)
您可以使用WebWorkers将代码执行移出主UI线程。 Angular2为此提供直接支持(实验性)。
我怀疑这会改变CORS方面的任何内容。 要使CORS正常工作,您的服务器需要使用正确的CORS标头进行响应。
另见http://www.syntaxsuccess.com/viewarticle/web-workers-in-angular-2.0