gpt4free-ts/utils/file.ts

38 行
1.0 KiB
TypeScript
Raw 通常表示 履歴

2023-09-10 23:26:06 +09:00
import * as fs from 'fs';
import { PathOrFileDescriptor, WriteFileOptions } from 'fs';
class SyncFileDebouncer {
private static instance: SyncFileDebouncer;
private readonly debounceTime: number;
private timers: { [path: string]: NodeJS.Timeout } = {};
private constructor(debounceTime: number = 300) {
this.debounceTime = debounceTime;
}
public static getInstance(debounceTime?: number): SyncFileDebouncer {
if (!SyncFileDebouncer.instance) {
SyncFileDebouncer.instance = new SyncFileDebouncer(debounceTime);
}
return SyncFileDebouncer.instance;
}
public writeFileSync(
file: string,
data: string | NodeJS.ArrayBufferView,
options?: WriteFileOptions,
) {
if (this.timers[file]) {
clearTimeout(this.timers[file]);
}
this.timers[file] = setTimeout(() => {
fs.writeFileSync(file, data);
delete this.timers[file];
}, this.debounceTime);
}
}
// 使用示例
export const fileDebouncer = SyncFileDebouncer.getInstance(500); // 100ms 的 debounce 时间