let addTimes = 0 // 控制函数运行次数
const fs = require('fs')
import { Dirent } from "fs";
function fsReadDir(dir: string): Promise<Dirent[]> {
return new Promise((resolve, reject) => {
fs.readdir(dir, { withFileTypes: true }, (err: any, files: Dirent[]) => {
if (err) {
reject(err);
}
resolve(files);
});
});
}
function * gen() {
let p:Dirent[] = fsReadDir(abspath);
paths.sort(File.compareFiles);
let len:number = paths.length
while (len--){
const abspath = path.join(dirPath,paths[len].name);
if(paths[len].isFile()){
// dosomthing
addTimes++;
}
else if (paths[len].isDirectory()){
let path2s: Dirent[] = fsReadDir(abspath);
let len2:number = path2s.length
while (len2--) {
const abspath = path.join(paths[len].name,path2s[len].name);
if(paths[len].isFile()){
// dosomthing
addTimes++;
}
}
}
else {
paths.splice(len,1)
}
}
在 gen
函数中
- fsReadDir 异步要进行处理
- 是我要以
addTimes
的数量做一个限制运行 当addTimes
到 30 后 暂停运行这个函数 并应该将 addTimes 进行清零,而当某个操作再次触发这个操作时,以上次暂停的运行上下文环境运行,当所有的文件被操作完后这个函数执行完。