nativescript
멀티 스레딩 모델
수색…
비고
새로운 크롬 v8 엔진은 부분적으로 ES7을 준수합니다. 그래서 "use strict"; 추가하면 "use strict"; 우리 파일의 꼭대기 (타이프 스크립트는 타이프 스크립트를 번역 할 때) 전역 범위에있는 모든 함수가 실제로 전역 범위에 할당되었는지 확인해야합니다. 따라서 self.functionName 또는 global.functionName 합니다.
angular2 서비스에서 근로자를 사용하십시오.
/app/services/greeting.service.ts :
import { Injectable } from '@angular/core';
import {greetingTypes,request,response}
from './greeting.interface'
@Injectable()
export class Greeting{
private worker;
constructor(){
this.worker = new Worker('../workers /greeting.worker');
}
sayHello(message:string, answerCallback:Function){
let requestData:request =
{'type':greetingTypes.HELLO ,'message':message} ;
this.worker.postMessage(requestData);
this.worker.onmessage = (msg)=>{
let response:response = msg.data;
if(response.type == greetingTypes.HELLO){
answerCallback(response.answer)
}
}
}
sayBye(message:string, answerCallback:Function){
let requestData:request = {'type':greetingTypes.BYE ,'message':message};
this.worker.postMessage(requestData);
this.worker.onmessage = (msg)=>{
let response:response = msg.data;
if(response.type == greetingTypes.BYE)
answerCallback(response.answer)
}
}
}
app/services/greeting.interface.ts :
export enum greetingTypes{
BYE,
HELLO
}
export interface request{
type:greetingTypes,
message:string
}
export interface response{
type:greetingTypes,
answer:string
}
app/workers/greeting.worker.ts :
require("globals");
import {greetingTypes,request,response} from
'../services/greeting.interface';
self.onmessage = (msg)=> {
let request:request = msg.data;
let responseData:response;
if(request.type == greetingTypes.HELLO)
console.log('worker got the message: ' +
request.message);
responseData = {'type':greetingTypes.HELLO,
'answer': 'HELLO!'};
global.postMessage(responseData);
if(request.type == greetingTypes.BYE )
console.log('worker got the message: ' +request.message);
responseData = {'type':greetingTypes.BYE ,
'answer':'goodBye!'};
global.postMessage(responseData);
};
app/app.component.ts :
import {Component} from "@angular/core";
import {Greeting} from './services/greeting.service';
@Component({
selector: "my-app",
templateUrl: "app.component.html",
providers:[Greeting]
})
export class AppComponent {
constructor(private greeting:Greeting){}
public tapHello() {
this.greeting.sayHello('hi',
(answer)=>{console.log('answer from worker : '+ answer)});
}
public tapBye() {
this.greeting.sayBye('bye',
(answer) => {console.log('answer from worker : ' + answer)});
}
}
app/app.component.html :
<StackLayout>
<Button text="sayBye" (tap)="tapBye()"></Button>
<Button text="sayHello" (tap) = "tapHello()"></Button>
</StackLayout>
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow