zoukankan      html  css  js  c++  java
  • Node笔记四

    异步操作
    -Node采用chrome v8 引擎处理javascript脚本
    --v8最大特点就是单线程运行,一次只能运行一个任务
    -Node大量采用异步操作
    --任务不是马上执行,而是插在任务队列的尾部,等前面的任务运行完成后坐在执行
    -提高代码的响应能力
    回调函数设计
    -对于一个函数如果需要定义回调函数
    --回调好函数一定作为参数的最后一个参数出现
    ---function demo1(arg1,arg2,callback){}
    ---function demo2(arg1,callback1,callback2){}
    --回调函数的第一个参数默认接受错误信息,第二个参数才是真正的回调数据(便于外界回去调用的错误情况)
    ---demo1(arg1,arg2,function(error,data){
    if(error) throw error;
    console.log(data);
    });
    --错误优先的回调函数
    ---约定将错误信息作为回调的第一个参数,第一个参数为上一步的错误信息
    ---因为之后的操作大多数都是异步的方式,无法通过try catch捕获异常

    强调错误优先
    -node大多数都是异步的操作方式,无法通过try catch捕获异常
    -错误优先的回调函数
    --第一个参数为上一步的错误信息
    回调函数的问题>相对于传统代码
    -不容易阅读
    -不容易维护
    -不容易调试
    -回调黑洞
    --解决方法:promise等

    演示代码:
    function isEvenOrOdd(number,callback) {
    if (typeof number === 'number') {
    if (number % 2) {
    callback(null,'number is even');
    }else{
    callback(null,'number is odd');
    }
    } else {
    //throw new Error('input not number -- throw');
    callback(new Error('input not number -- callback'));
    }
    }
    isEvenOrOdd(2,(error,data) =>{
    if(error) throw error;
    console.log(data);
    });

    isEvenOrOdd(3,(error,data) =>{
    if(error) throw error;
    console.log(data);
    });

    isEvenOrOdd('myString',(error,data) =>{
    if(error) throw error;
    console.log(data);
    });

    什么是异步?
    -日常生活中
    --打电话
    --发短信
    -程序世界中
    --setTimeout()
    --$.ajax()
    --文件操作
    --Node所有的会发生阻塞的操作都是异步
    -归根结底,所有需要异步的操作都是基于'网络操作'和'磁盘操作'做两个方面的。
    什么是I/O?
    -简单理解就是输入到输出之间的转化过程

  • 相关阅读:
    HDU.2087 剪花布条
    一个acm过来人的心得
    一个acm过来人的心得
    HDU.2190 悼念512汶川大地震遇难同胞——重建希望小学
    HDOJ.2501 Tiling_easy version
    HDOJ.2501 Tiling_easy version
    HDU
    poj3216 Prime Path(BFS)
    poj1426 Find The Multiple (DFS)
    Rikka with Nickname (简单题)
  • 原文地址:https://www.cnblogs.com/nordon-wang/p/6038778.html
Copyright © 2011-2022 走看看