2016-08-24 3 views
1

Я только что создал образец приложения в соответствии с jhon papa пример (программа быстрого запуска). я разработал класс обслуживания, чтобы получить данные в формате JSON с моей службы отдыха http://localhost:8081//Myserver/rest/herosAngular2 rest calls in background

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); 
    } 
} 

класс обслуживания работает отлично и герои, перечислены в пользовательском интерфейсе, а также (просто забыть о КРОСЕ orgin проблемы здесь). Но одна вещь, которую я заметил здесь, остальная связь с http://localhost:8081//Myserver/rest/heros напрямую отправляется из браузера (я вижу ее на вкладке в сети инструмента разработчика).

В соответствии с моим приложением он не должен отправлять браузер, вместо этого он должен обрабатываться как классы бэкэнд-бобов в JSF, а затем передавать данные в соответствующий компонент. Я верю, что это решит мою проблему CROS orgin. Доза Angular2 имеет такой вариант? Пожалуйста, предложите правильный способ его достижения.

ответ

0

Вы можете использовать WebWorkers для перемещения выполнения кода из основного потока пользовательского интерфейса. Angular2 обеспечивает прямую поддержку этого (экспериментального).

Я сомневаюсь, что что-то изменит в отношении CORS. Для работы CORS ваш сервер должен отвечать правильными заголовками CORS.

Смотрите также http://www.syntaxsuccess.com/viewarticle/web-workers-in-angular-2.0

+0

- Спасибо за ур быстрый ответ, пожалуйста прояснить мои вопросы. –

+0

- Будут ли обработаны все другие компоненты WebWorker? –

+0

Я не много сделал, но AFAIK поток пользовательского интерфейса работает только с рендерингом и всеми другими прогонами кода в WebWorker. Данные привязки и события передаются между потоком пользовательского интерфейса и потоком WebWorker (все полностью прозрачным). –