• 学习搭建一个小网站_6_坑,看懂api文档和理解回调函数


    从上一篇的官方API文档开始,

    http.createServer([requestListener])
    #
    
    Returns a new instance of http.Server.
    
    The requestListener is a function which is automatically added to the 'request' event. 

    两个注意点:

    1. function: requestListener 是一个方法
    2. event:有一个叫做request的“事件”

    简单介绍 事件 event:

    nodejs基于google的V8引擎(很高端啊,不明觉厉的样子),先不用管高大上的原理,当前只需要知道以下东西即可:

    设想一个场景来理解“事件”:

    事件:有人对你打招呼“hello”

    事件结果:你听到了“hello”

    var events = require('events'); //nodejs 有一个叫做event的模块,引入它,就能启用"事件"了
    var myEvent = new events.EventEmitter(); //event模块下有个叫做EventEmitter的类,把它new出来,或者直接背出来!
    
    function sayHello(str)  //一个自定义方法,这里是事件的结果
    {
        console.log("你听到有人对你说'" +str + "'");
    }
    
    myEvent.on("打招呼", sayHello); //定义一个事件,叫做"打招呼",并且为这个事件注册一个方法,即上面定义到sayHello方法
    //myEvent.emit("打招呼", "hello");  //触发这个"打招呼"事件

    保存为event.js后,可以执行  node event.js,看到控制台没有输出

    然后取消最后一行行首的注释,再执行node event.js,看到控制台输出了

    你听到有人对你说'hello'

    也就是说,“打招呼” 这个事件被触发,并且执行了这个事件对应的方法 sayHello,并且按照这个sayHello方法的定义,传入了参数值 'hello'

    注意,可以为同一个事件,注册多个方法,当事件触发时,会根据注册顺序依次执行

    event简单介绍完毕

     回到官方文档:

    实际上就是nodejs的http模块,有一个叫做'request'的事件,createServer的参数,[requestListener], 就是一个方法,会自动注册到'request'这个事件下,

    当'request'事件触发时,会自动执行之前注册这个方法,并给这个方法传递参数

    那么问题来了,学挖掘机哪家强 这个方法的参数是什么,

    在API文档https://nodejs.org/api/http.html#http_event_request页面,搜索叫做request的事件,

    找到event: 'request',现在知道这个[requestListener]应该怎么传入了function (request, response) { }其中requestresponse分别是什么类型也写明了

    如何看懂文档的这个问题基本解决,有些其他的api也要自己挖一挖才能理解

    简单介绍 回调函数callback:

    javascript是个弱类型语言,并且function本身也是一个对象,这意味着,function可以作为参数,传递给另一个function

    如下例子:

    function a1(callback){   //方法a1接收一个叫做callback的参数
        console.log("i am function1");
        callback();  //方法a1将callback参数当作方法进行执行
    }
    
    function a2(){
        console.log("i am function2");
    }
    
    a1(a2); //方法a2作为参数传递给了方法a1

    保存为callback.js,执行 node callback.js

    输出如下:

    i am function1
    i am function2

    可以看到方法a1和a2都被执行了

    收工,明天继续

  • 相关阅读:
    media query不一致
    数据库设计三范式
    异步概念及使用场景
    关于webservice框架CXF的总结
    通过bash文件(shell命令)对文件进行修改
    shell命令相关问题
    shell对文本进行操作命令
    虚拟机安装系统常见问题
    安装autotools系列工具
    Centos和Ubuntu下打包项目
  • 原文地址:https://www.cnblogs.com/hardylin/p/5183745.html
Copyright © 2020-2023  润新知