zoukankan      html  css  js  c++  java
  • Node.js:回调函数

    概要本篇博客主要通过对比node.js异步与同步方式读取文件的方式来解释node中回调函数的作用。

    1.异步方式读取文件

    新建一个文本文档用于测试,如下图:

    代码如下:

    // node异步方式读取文件
    var fs = require('fs');
    fs.readFile('input.txt','utf-8',function(err,data){
        if (err) {
            console.error(err);
        } else {
            console.log(data);
        }
    });
    console.log('end');

    执行结果如下:

    2.node也提供了同步读取文件的API -- readFileSync(path, options):

    用上述文本文档测试,代码如下:

    // node同步方式读取文件
    var fs = require('fs');
    var data = fs.readFileSync('input.txt', 'utf-8');
    console.log(data);
    console.log('end.');

    执行结果如下:

      对比发现,运行结果不同。  

      同步式读取文件的方式比较容易理解,将文件名作为参数传入fs.readFileSync 函数,阻塞等待读取完成后,将文件的内容作为函数的返回值赋给data变量,接下来控制台输出data的值,最后输出end。

      异步式读取文件是通过回调函数来实现的。fs.readFile 接收了三个参数:第一个是文件名,第二个是编码方式,第三个是一个函数,即回调函数。fs.readFile 调用时所做的工作只是将异步式I/O请求发送给了操作系统,然后立即返回并执行后面的语句,执行完以后进入事件循环监听事件。当fs 接收到I/O请求完成的事件时,事件循环会主动调用回调函数完成后续工作。因此我们会先看到end.,再看到input.txt文件的内容。

  • 相关阅读:
    Swift -- Swfit 笔记
    web -- CSS 图片宽高不固定的垂直居中方法
    web -- Angularjs 笔记2
    web -- Angularjs 笔记
    web -- Angularjs 备忘录应用
    Swift -- swift 函数代码
    Swift -- 创建空数组和空字典
    Linux -- FresBSD的镜像文件说明
    Linux -- ubuntu下安装程序的三种方法
    Linux -- Ubuntu 命令2
  • 原文地址:https://www.cnblogs.com/koto/p/5692261.html
Copyright © 2011-2022 走看看