2017-10-31 4 views
0

각도 4로 앱을 작성하는 중에 백그라운드에서 다른 작업 (예 : 작업 | 프로세스 | 작업)을 백그라운드에서 다른 작업과 병렬로 실행할 필요가 생겼습니다 , 그/그녀가 상호 작용하고있는 구성 요소. 그리고 다른 사람들을 막지 않도록 그 방법을 실행하십시오.Typescript 각도 실행 배경 병렬 작업

그 배경 방법은 폴링의 실현이므로 주기적으로 결정된 간격으로 서버에 요청을 보내 일부 개체의 현재 상태를 묻습니다.

이상적으로는 어떤 간격으로 일부 obects의 상태를 요청하기 위해 서버에 요청을 보내는 그러한 메소드의 콜렉션을 작성하는 방법을 알고있는 것이 더 좋습니다. 그리고 그들 중 누구도 다른 사람들을 막지 않습니다.

제 질문은 그러한 방법/방법 모음을 작성하는 가장 좋은 방법입니다.

미리 감사드립니다.

P. : i 병렬 병렬성 & 동시성 용어를 끕니다. 사실 내가이 게시물에서 병렬 처리를 언급하는 곳이면 어디에서나 동시성을 의미합니다.

동시성은 두 개 이상의 작업이 겹치는 기간에 시작, 실행 및 완료 될 수있는 경우입니다. 반드시 둘 다 같은 순간에 달릴 것이라는 의미는 아닙니다. 예 : 단일 코어 머신에서의 멀티 태스킹.

병렬 처리는 작업이 문자 그대로 동시에 실행되는 경우입니다 (예 : 멀티 코어 프로세서

RichieHindle (C)

+0

웹 워커 검색 –

답변

1

것이 가장 좋은 방법입니다 있는지 확실하지 않습니다,하지만 난 내 프로젝트에서 시뮬레이션을 재생 비동기 play() 기능을 실행하고 있습니다. 루프에는 while(true) 루프가 있고 그 루프는 socket.io을 호출하여 시뮬레이션에서 클라이언트로 회선을 보내고 그에 따라보기를 업데이트하도록 서버에 알립니다.

var updateEveryMS = 1000; 

async poll() { 
    while (true) { 
    // code to poll server and update models and view ... 
    await this.sleep(updateEveryMs); 
} 

sleep(ms) { 
    return new Promise(resolve => setTimeout(resolve, ms)); 
} 

를 다음 페이지가로드 된 후 그것을 시작 ngAfterViewInit()

ngAfterViewInit() { 
    poll(); 
} 

poll() 전화 :

는 귀하의 케이스에 적응.

+0

글쎄, 고마워, 그게 효과가 있다고 생각하지만, 최선의 해결책이 내 의견이 – komron

+0

@ komron 사실, 이제는 생각, 이제 조금 어색해. 어쩌면 당신은 setInterval (() => {poll_server()와 같은 무언가를 ngAfterViewInit에 넣을 수 있습니다. ((답) => {update_view (응답);});}, updateEveryMs); 여기서 poll_server는 서버의 응답을 해결하는 약속을 반환하는 함수입니다. –

+0

또한 observables를 사용하여 이것 역시 나쁘지 않은 해결책이라고 생각합니다. – komron