`
aigo
  • 浏览: 2675690 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

[nodejs]异步读取并缓存多个文件

阅读更多

原文:http://stackoverflow.com/questions/9618142/asynchronously-reading-and-caching-multiple-files-in-nodejs

 

When your callback to readFile executes, the for loop will already have finished. So i will be files.length and files[i] will be undefined. To mitigate this, you need to wrap the variables in a closure. The simplest way to do this is to create a function which does your readFile call, and call that in the loop:

function read(file) {
    require('fs').readFile(file, 'utf8', function (error,data) {
        cache[file]=data;
    });
}

for(var i = 0; i < files.length; i++){
    read(files[i]);
}

 

For even better execution control, you might want to look into async:

function readAsync(file, callback) {
    fs.readFile(file, 'utf8', callback);
}

async.map(files, readAsync, function(err, results) {
    // results = ['file 1 content', 'file 2 content', ...]
});

 

Edit: Made use of helper function for async example.

 

 

分享到:
评论

相关推荐

    Nodejs中搭建一个静态Web服务器,通过读取文件获取响应类型示例代码.zip

    4. 使用`fs.readFile()`异步读取文件。如果文件存在,将返回数据,并设置响应的状态码为200,`Content-Type`为文件的MIME类型。如果文件不存在,返回404错误。 5. 最后,我们启动服务器监听3000端口,并在控制台输出...

    nodejs 搭建的读取新浪微博系统

    在本文中,我们将深入探讨如何使用Node.js搭建一个读取新浪微博的系统,这对于新手来说是一个极好的自学案例。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它以其高效的非阻塞I/O模型和模块化架构,使得...

    nodejs的http请求html/css/js

    在上述代码中,`res`是响应对象,我们监听`data`事件来接收数据的每个块,并将它们拼接在一起。当所有数据都接收完毕后,`end`事件会被触发,这时可以对完整的响应数据进行处理。如果在请求过程中发生错误,`error`...

    Nodejs学习笔记.rar

    Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端..."Nodejs学习笔记"这个压缩文件应当包含了解析这些概念和技能的详细内容,帮助初学者或进阶者提升Node.js技术能力。

    NodeJS中文文档

    `EventEmitter`是NodeJS中处理异步操作的核心模式,允许对象订阅事件并在事件发生时接收通知。这种机制广泛应用于网络通信、文件系统操作等领域,通过事件驱动模型提高了NodeJS的性能和响应速度。 #### 六、流...

    Node.js-node.js模拟实现一个简单的文件系统

    1. `fs.readFile()` 和 `fs.writeFile()`:分别用于异步读取和写入文件内容。 2. `fs.appendFile()`:追加内容到文件末尾。 3. `fs.unlink()`:删除文件。 4. `fs.mkdir()` 和 `fs.rmdir()`:创建和删除目录。 5. `...

    nodejs实战第二季

    - `fs.readFile(path[, options], callback)`:异步读取文件内容。 - `fs.writeFile(file, data[, options], callback)`:异步写入数据到文件。 - **http**:用于创建HTTP服务器和客户端。 - `http.createServer...

    Nodejs koa

    另外,Koa 还提供了 `send()` 方法,自动处理文件发送,包括缓存控制、ETag 复用等,以提高服务性能。 ### 路由处理 Koa 的路由处理相对简单,通过 `app.use()` 注册中间件即可。但通常我们会使用 `koa-router` ...

    NODEjs API文档

    - **`Caching`**:当同一个模块被多次加载时,会缓存结果以提高性能。 - **`All Together`**:综合上述所有模块加载方式的总结。 - **`Loading from the 'require.paths' Folders`**: - **注意事项**:强调了避免...

    nodejs:NodeJS相关内容集合

    2. **单线程与异步**:NodeJS 默认在一个进程中只有一个主线程,通过事件和回调函数实现异步操作,避免了多线程的复杂性和资源消耗。 3. **V8 引擎**:NodeJS 使用 Google 的 V8 引擎,使得 JavaScript 代码运行...

    NodeJS文档

    - **module**:每个文件都会被当作模块处理,并具有自己的 `module` 对象。 - `module`: 表示当前模块的对象。 #### 定时器 定时器是 Node.js 中处理异步任务的重要方式之一。 - **setTimeout(callback, delay, ...

    nodejs数据.rar

    在“nodejs数据.rar”这个压缩包中,我们可以推测它包含与Node.js相关的数据或项目。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让JavaScript能够在服务器端执行,开启了后端开发的新篇章。Node.js以其...

    nodejsAPI中文版

    开发者可以利用事件监听器来处理文件读取、网络请求等异步操作的结果。 process对象是Node.js中一个特殊的全局变量,它允许开发者访问当前进程的信息。例如,process.env可以获取当前环境的环境变量,process.exit...

    Node.js-Nodejs学习笔记以及经验总结

    3. 缓存策略:合理使用缓存,提高数据读取速度。 八、错误处理 Node.js中的错误处理通常采用回调函数的错误参数(err作为第一个参数)或使用try...catch结构,同时推荐使用Promise或async/await进行更优雅的错误...

    nodejs应用开发实践笔记

    - 文件读写:了解`fs`模块,学习如何读取、写入和操作文件及目录。 - 流(Stream):理解流的概念,如何使用它处理大文件或持续数据流,如HTTP响应。 4. **网络编程** - HTTP服务器:创建和管理HTTP服务器,处理...

    cache-it:一个简单的用于nodejs的缓存模块,基于redis构建

    5. **批量操作**:可能支持一次处理多个缓存项,提升性能。 6. **错误处理**:良好的错误处理机制,确保在Redis连接出现问题时,仍能优雅地处理请求。 **使用步骤** 1. **安装**:首先,需要在项目中安装`cache-it...

    nodejs服务器.rar

    1. 批量操作:减少频繁的I/O操作,如批量读取文件、数据库操作。 2. 缓存策略:合理使用内存缓存,减少重复计算或I/O。 3. 并发控制:利用Node.js的事件循环,优化并发处理,避免过多的并发导致资源耗尽。 总结,...

    nodejs自动批量翻译中文到其它语言.docx

    7. **异步函数**:`init`函数是整个流程的入口,它异步地初始化需要翻译的文件并调用`fileDisplay`函数遍历文件。`analyticalFile`函数负责分析每个文件并调用谷歌翻译。 8. **谷歌翻译接口**:`driver.get`方法...

    nodeJSserver-源码.rar

    例如,读取文件、网络请求等操作都不会阻塞程序的执行,而是通过回调函数来处理结果。上述代码中的`createServer`方法就是一个例子,它会在接收到HTTP请求时调用提供的回调函数。 四、中间件机制 Node.js服务器经常...

Global site tag (gtag.js) - Google Analytics