• 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文件的内容。

  • 相关阅读:
    优秀的JavaScript模块是怎样炼成的(转发)
    从发展历史理解 ES6 Module(转发)
    JavaScript 模块演化简史(转发)
    objcopy 格式转换
    链接操作
    fflush()
    为什么栈地址从高到低生长,堆从低到高
    C语言中,a[-1] (负数下标)的用途
    va_list 、va_start、 va_arg、 va_end 使用说明
    docker 部署 redis
  • 原文地址:https://www.cnblogs.com/koto/p/5692261.html
Copyright © 2020-2023  润新知