1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import {nextTick} from "vue";
- import sleep from "./sleep";
- class TutorialDriver {
- private readonly name: string;
- private readonly len: number;
- private idSet: Set<string> = new Set();
- private readonly hook: () => void;
- private flag = true;
- constructor(name: string, len: number, hook: () => void) {
- this.name = name;
- this.len = len;
- this.hook = hook;
- }
- setId(name: string, splicing: boolean = true) {
- const id = splicing ? `#${this.name}-${name}` : name
- this.idSet.add(id)
- if (this.idSet.size === this.len && this.flag) {
- this.flag = false
- nextTick().then(() => {
- sleep(200).then(() => {
- this.hook && this.hook()
- })
- })
- }
- return id;
- }
- getSize(): number {
- return this.idSet.size
- }
- getId(name: string) {
- return `#${this.name}-${name}`
- }
- }
- export default TutorialDriver
|