2016-12-08 1 views
0

worker 스레드에서 postMessage()를 호출하여 주 스레드로 메시지를 보내면 단일 인수 서명이 허용되지 않습니다.postMessage()의 worker 스레드 문제

postMessage ({success : true});

VisualCode에서 postMessage (any, string, transfer?)의 필수 서명을 표시하고 있습니다.

필요 ('전역'); 작업자 파일 맨 위.

이것은 내가 지금까지 무엇을 가지고 :

require('globals'); // necessary to bootstrap tns modules on the new thread 
 

 
onmessage = function(msg) 
 
{ 
 
    var request = msg.data; 
 
    var data = request.data; 
 
    var result = "OK"; 
 

 
    var message : any = result !== undefined ? { success: true, src: result } : { }; 
 

 
    postMessage(message); // << problem 
 
}

+0

어떤 작업자 스레드 구현을 사용하고 있습니까? NativeScript의 버전은 무엇입니까? –

+0

NS 2.4.1 및 TS 1.8.10 – dashman

답변

0

당신이보고있는 오류가 가장 가능성이 타이프 라이터를 사용의 결과로 컴파일 오류가 있음을 언급하는 것이 중요하다.

nativescript 작업자 구현은 현재 버전에서 하나의 인수 만 받아 들여야합니다. 그들은 적절한 정의를 포함하기

node_modules/tns_core_modules/webworker.es2016.d.ts에 대한 참조를 추가

+0

죄송합니다. 너무 빨리 말합니다. references.d.ts에 대한 참조를 추가하고 비주얼 코드/ts 오류가 사라졌습니다. 하지만 컴파일을 시도 할 때 중복 된 Worker 오류가 발생합니다. TS 1.8.10을 사용하고 있습니다. TS 2.0 이상을 사용해야합니까? es2016 정의에는 이러한 정의가 필요합니다. – dashman

+0

'node_modules/typescript/lib/lib.d.ts (16138,11) : 충돌 TS2300 : 중복 식별자'작업자 '와 충돌이있는 것 같습니다.' – dashman

1

그것의 약간의 해결, 그러나 나는이 같은 노동자 파일의 beggining에 재 선언 함수 서명을 추가하여 내 응용 프로그램에서 그것을 해결하기 위해 관리 :

declare function postMessage(message: any); 

희망이 있습니다.

+0

tnx, 아주 좋습니다. –