美文网首页
Node.js事件驱动(对文件的操作)

Node.js事件驱动(对文件的操作)

作者: 不要和我名字一样 | 来源:发表于2017-06-03 22:55 被阅读25次

需求:在本地有一个文件,判断如果这个文件存在的话,就把该文件删除后在创建一个新的文件,如果不存在就直接创建 。

/**
 * Created by 黄森 on 2017/6/3.
 */
// 引入文件操作fs模块
const fs = require("fs");
console.time('timer');
fs.stat('./list.md', (err, stats) => {       //一
    if (err) {
        console.log("文件不存在");
        fs.writeFile('./list.md', new Date(), (err) => {   //二
            if (err) {
                console.error(err);
                return false
            }
            console.log("文件创建成功")
        });
        return false;
    }
    //存在的话删除
    fs.unlink('./list.md', (err) => {
        if (err) {
            console.error(err);
            return false
        }
        fs.writeFile('./list.md', new Date(), (err) => {
            if (err) {
                console.error(err);
                return false
            }
            console.log("文件删除后创建成功")
        })
    })
});
console.timeEnd('timer');

执行过程

Node执行过程.png
首先一个线程从上往下开始执行代码,当遇到fs调用的函数之后就比较特殊了,它是事件驱动的,它里面有一个事件队列,所谓的事件队列就是一个键值的结构,node在执行的过程中遇到函数调用,就把该函数放到事件队列里面,然后去执行它的回掉函数,档执行到最后的时候,又回到事件队列去找,找到上一次执行回掉函数里面的函数操作,然后上一次的回掉函数销毁,依次类推,依次执行。 Paste_Image.png

在举个例子,代码如下:

Paste_Image.png
那么这个程序函数的执行:当执行到第一个fs.stst的时候添加到事件队列中,即添加fs.stat(a)=>ststCallback1,当执行到第二个的时候把fs.stat(b)=>ststCallback2页添加到事件队列中,最后执行到consonle.timeEnd('timer')后执行完了,完了之后又回到事件队列去找第一个fs.stat(a)=>ststCallback1,找到它里面fs.readFile(a)这个函数,添加到事件队列中执行完,然后fs.stat(a)=>ststCallback1销毁,去找到fs.stat(b)=>ststCallback2fs.readFile(b)这个函数,执行完后fs.stat(b)=>ststCallback2销毁,接着又去事件中去找执行fs.readFile(a)的回掉函数,执行完之后去执行fs.readFile(b)的回掉,就这样来回的跳。

相关文章

  • Node.js事件驱动(对文件的操作)

    需求:在本地有一个文件,判断如果这个文件存在的话,就把该文件删除后在创建一个新的文件,如果不存在就直接创建 。 执...

  • XDL_NO.8 Node.js 操作MongoDB数据库

    Node.js 操作MongoDB数据库 安装组件 mongodb Node.js 官方对MongoDB的驱动mo...

  • Redis 事件

    Redis是事件驱动的服务器。事件是对操作的抽象,redis中的事件分为两类: 1)文件事件:redis通过soc...

  • Nodejs学习第5天

    Node.js内置基础模块fs, Node.js 提供了基础的文件操作,并同时提供文件的同步和异步操作,如: .....

  • redis的事件

    redis是事件驱动程序,服务器需要处理2类事件一是文件事件(即服务器对套接字操作的抽象),如服务器和客户端通信,...

  • Nodejs学习第8天

    Events - events模块是Node.js的核心模块、核心API之一,它是Node.js事件驱动模型的核...

  • API - fs 文件操作

    Node.js 提供一组类似UNIX(POSIX)标准的文件操作API,Node.js中操作文件的模块是fs(Fi...

  • Node事件循环

    Node.js 事件循环机制 Node.js 采用事件驱动和异步 I/O 的方式,实现了一个单线程、高并发的 Ja...

  • 《Node.js开发指南 ByVoid》异步和事件驱动

    参考《Node.js开发指南 ByVoid》 一、异步式 I/O 与事件驱动 1.Page4:Node.js 最大...

  • Android UI篇——自动设置所有View的事件【以Clic

    针对任何操作系统的操作,其实都是通过事件驱动来完成的,例如Windows的鼠标驱动、Android的触摸驱动,针对...

网友评论

      本文标题:Node.js事件驱动(对文件的操作)

      本文链接:https://www.haomeiwen.com/subject/jivmfxtx.html