typescript 디자인 모드 - 관찰자 모드
1348 단어 typescript
대상 간 에 한 쌍 이상 의 의존 을 정의 합 니 다. 그러면 대상 이 상 태 를 바 꾸 면 의존 하 는 대상 은 알림 을 받 고 자동 으로 업 데 이 트 됩 니 다.
필드 사용
파일 업로드 및 업로드 진행 표시
예시
interface Progress {
doProgress(percent: number);
}
class UploadFile {
protected file: File;
protected progresses: Progress[];
protected spliteSize: number;
constructor(file: File, progresses: Progress[], spliteSize: number = 1024) {
this.file = file;
this.progresses = progresses;
this.spliteSize = spliteSize;
}
public start() {
this.split();
}
protected split() {
let splitNum = Math.ceil(this.file.size / this.spliteSize);
for(let i = 0; i < splitNum; i++) {
this.upload(i * this.spliteSize);
this.observeProgress(i/splitNum);
}
}
protected upload(start: number) {
// ……
}
protected observeProgress(percent: number) {
if(Object.prototype.toString.call(this.progresses) == '[object Arrary]') {
for(let observe of this.progresses){
observe.doProgress(percent);
}
}
}
}
class Component implements Progress{
public OnClick(file: File) {
let fileUpload = new UploadFile(file, [this]);
}
doProgress() {
// ***
}
}
느낌 이 이상 하 다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Typescript 팁: 브랜드 유형을 사용하면 더 안전한 기능을 사용할 수 있습니다.다음과 같은 함수가 있다고 상상해 보십시오. 페이지 번호는 음수가 될 수 없기 때문에 분명히 잘못된 것입니다. 간단한 해결책은 다음과 같은 줄을 추가하는 것입니다. 그러나 음수로 함수를 호출하려고 할 때 유형 오류가...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.