使用 Generator 函数 怎么友好地控制函数运行次数

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 函数中

  1. fsReadDir 异步要进行处理
  2. 是我要以 addTimes 的数量做一个限制运行 当 addTimes 到 30 后 暂停运行这个函数 并应该将 addTimes 进行清零,而当某个操作再次触发这个操作时,以上次暂停的运行上下文环境运行,当所有的文件被操作完后这个函数执行完。
阅读 757
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题