栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

等待JS中没有分隔符的迭代函数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

等待JS中没有分隔符的迭代函数

您有几种选择:

1)由于其他所有操作都使用

fs
的同步方法完成,因此您可以更改
fs.readdir
fs.readdirSync

function searchForPackage(directory) {  fs.readdirSync(directory).forEach(file => {    var currentLocation = directory + "/" + file;    if (fs.statSync(currentLocation).isDirectory() && file != 'bin' && file != '.bin') {      searchForPackage(currentLocation);      return;    } else if (file == "package.json") {      var content = fs.readFileSync(currentLocation);      var jsonContent = JSON.parse(content);      var obj = {        name: jsonContent.name,        license: jsonContent.license,        version: jsonContent.version      }      jsonTable.push(obj);      jsonTable.push({name: jsonContent.name, license: jsonContent.license, version: jsonContent.version});      return;    }  })}

2)转换

fs.readdirSync
为a
Promise
然后使用
async/await

async function searchForPackage(directory) {  const files = await new Promise((resolve, reject) => {    fs.readdir(directory, (err, files) => {      if (err) reject(err);      else resolve(files);    });  });  await Promise.all(files.map(async file => {    var currentLocation = directory + "/" + file;    if (fs.statSync(currentLocation).isDirectory() && file != 'bin' && file != '.bin') {      await searchForPackage(currentLocation);      return;    } else if (file == "package.json") {      var content = fs.readFileSync(currentLocation);      var jsonContent = JSON.parse(content);      var obj = {        name: jsonContent.name,        license: jsonContent.license,        version: jsonContent.version      }      jsonTable.push(obj);      jsonTable.push({name: jsonContent.name, license: jsonContent.license, version: jsonContent.version});      return;    }  }))}

3)使用几个第三方模块来进行一些清理(

fs-extra
照顾像
fs.readdir
您一样的异步方法。
async-af
提供可链接的异步Javascript方法,例如parallel
forEach
。):

const fs = require('fs-extra');const AsyncAF = require('async-af');async function searchForPackage(directory) {  await AsyncAF(fs.readdir(directory)).forEach(async file => {    var currentLocation = directory + "/" + file;    if (fs.statSync(currentLocation).isDirectory() && file != 'bin' && file != '.bin') {      await searchForPackage(currentLocation);    } else if (file == "package.json") {      var content = fs.readFileSync(currentLocation);      var jsonContent = JSON.parse(content);      var obj = {        name: jsonContent.name,        license: jsonContent.license,        version: jsonContent.version      }      jsonTable.push(obj);      jsonTable.push({name: jsonContent.name, license: jsonContent.license, version: jsonContent.version});    }  });}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/609112.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号