zoukankan      html  css  js  c++  java
  • Nodejs-异步操作

    1.阻塞

    console.time('main');//代码计时器
    //不断循环阻塞了代码的执行
    for(var i=0;i<10000000;i++){
    
    }
    console.timeEnd('main');
    console.log("完成执行了");
    

    2.错误优先的回调函数(针对异步操作)

       异步回调函数的设计

        (1)回调函数一定作为最后一个参数出现

          funtion foo1(name,age,callback){} 

          funtion foo2(value,callback1,callback2){} 

        (2)回调函数的第一个参数默接受错误信息,第二个参数才是真正的回调数据(便于外界获取调用的错误情况)

          callback(null,data);第一个参数一般设置为错误的对象,第二个参数才是真正的数据,null就是没有错误

          为什么要把回调函数多加一个参数呢?

          因为在程序执行过程中,有可能出现错误,出现错误要让外界知道,采用的方式就是以参数形式传递(因为异步的时候,是无法通过try catch捕获异常,出了错误,外界是没法知道的)

          约定将错误信息作为回调的第一个参数,为上一步的错误信息

    function isEventOrOdd(number,callback){
    	if(typeof number==='number'){
    		if(number%2){
    			callback(null,'当前传入的是奇数');
    		}else{
    			callback(null,'当前传入的是偶数');
    		}
    
    	}
    	else{
    			callback(new Error('你传入的不是数字'));
    		}
    }
    
    isEventOrOdd(10,(error,data)=>{
    	if(error) throw error;
    	console.log(data);
    });
    
    isEventOrOdd(11,(error,data)=>{
    	if(error) throw error;
    	console.log(data);
    });
    isEventOrOdd('asda',(error,data)=>{
    	if(error) throw error;
    	console.log(data);
    });
    

    运行结果:

    3.异步

      setTimeout()

      $.ajax()

      文件操作

      Node所有的会发生阻塞的操作都是异步的

     

    4.

      Node采用chrome V8引擎处理JavaScript脚本,V8最大的特点就是单线程运行,一次只能运行一个任务

      Node大量采用异步操作(asynchronous operation),即任务不是马上执行,而是插在任务队列尾部,等到前面的任务运行完之后再执行

      提高代码的响应能力

      多线程的缺点:

      (1)创建线程耗费资源

      (2)线程数量有限

      (3)CPU在不同线程之间转换,有个上下文转换,这个转换非常耗时间

      Node最大的性能优势,就是单线程

  • 相关阅读:
    [转帖]Mootools源码分析03 Hash
    iphone的手势与触摸编程学习笔记
    怎样使项目中的cocos2d默认模板支持ARC内存管理
    xCode4.2下添加TableViewController会出现”Prototype cells“警告
    关于31天App教程示例中一些因SDK版本而出现的问题
    带你掌握二进制SCA检测工具的短板及应对措施
    HDZ城市行深圳站|AIoT时代,如何抓住智联生活的战略机会点?
    分析内部运行机制,教你解决Redis性能问题
    今天谈谈用户故事地图,不是用户故事
    云图说|ModelArts Pro:让AI开发更简单
  • 原文地址:https://www.cnblogs.com/GumpYan/p/5787074.html
Copyright © 2011-2022 走看看