文档章节

node异步和同步

西米粟
 西米粟
发布于 2017/04/27 18:37
字数 249
阅读 3
收藏 0

同步

同步代码异味着每次执行一个操作,在一个操作完成之前,代码的执行会被阻塞无法移动到下一个下一个操作

function sleep(milliseconds){
  var start = new Date().getTime();
  while((new Date().getTime()-start)<milliseconds){

  }
}

function fetchPage(){
  console.log('one');
  sleep(2000);
  console.log('sleep two');
}


function fetchApi(){
  console.log('three ');
  sleep(2000);
  console.log('sleep four');
}
fetchPage();
fetchApi();

node.js几乎不使用同步而使用异步

异步

一旦调用无需等待,立即调用.并且是非阻塞的.两个函数会侦听远程服务器的返回,并以此触发回调函数.

var http = require('http');

function fetchPage(){
  console.log('fetchPage');
  http.get({host:'www.baidu.com',path:'/?delay-2000'},function(res){
    console.log('date return from requesting page');
  }).on('error',function(e){
    console.log('There was an error '+e);
  });
}

function fetchApi(){
  console.log('fetchApi');
  http.get({host:'www.baidu.com',path:'/?delay-2000'},function(res){
    console.log('date return from requesting api');
  }).on('error',function(e){
    console.log('There was an error '+e);
  })
}

fetchPage();
fetchApi();

函数的回调顺序无法保证,与网络有关

© 著作权归作者所有

共有 人打赏支持
西米粟
粉丝 1
博文 34
码字总数 10760
作品 0
南京
程序员
基于Lua实现的脚本和服务器引擎--Node-Lua

Node-Lua是一款基于Lua实现的脚本和服务器引擎,它支持构建海量Lua服务(ContextLua)并以多线程方式运行在多核服务器上,采用了任务多路复用的设计方案,有效利用了多核优势。node-lua致力于构...

socoding
2016/03/17
1K
5
Node.js的特点

作为后端JavaScript的运行平台,Node保留了前端JavaScript中些熟悉的接口,没有改写语言本身的任何特性,依旧基于作用域和原型链,区别在于它将前端中广泛应用的思想作用到了服务器端。下面我...

天才小龙
01/05
0
0
node学习笔记03(异步I/O)

用户体验 异步的概念首先在web2.0中火起来,是因为浏览器中的javascript在单线程上执行, 而且它还与UI的渲染共用一个线程,这意味着javascript在执行的时候UI渲染和响应式处于停滞状态的 如果脚...

funkyLover
2014/04/09
0
0
NODEJS如何优雅的实现同步?

先描述一下场景: 我需要用NODEJS实现一个"无驱网络打印服务"实现:客户端(浏览器)-(httppost)->NODEJS打印服务-(socket)->ESC/POS小票打印机; GITHUB上找到了chn-escpos(https://github.com/b...

方小葱
2017/08/11
75
4
【深入浅出Node.js系列五】初探Node.js的异步I/O实现

深入浅出Node.js系列 【深入浅出Node.js系列一】什么是Node.js 【深入浅出Node.js系列二】Node.js&NPM的安装与配置 【深入浅出Node.js系列三】深入Node.js的模块机制 【深入浅出Node.js系列四...

陶邦仁
2016/01/11
148
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell-日志脚本小实验

1.查找日志2018-8-15,求得那一分钟访问量最大。 #/bin/bash#from cc#2018-8-15#2018-08-15.log 哪一分钟 访问量 最大for d in `ls /data/nginx/logs/`doif [ -a 2018-08-15...

chencheng-linux
昨天
0
0
Android中的设计模式之状态模式

参考 《设计模式:可复用面向对象软件的基础 》5.8 State 状态 对象行为型模式 《Android源码设计模式解析与实战》第7章 随遇而安--状态模式 意图 允许一个对象在其内部状态改变时改变它的行...

newtrek
昨天
0
0
xshell端 vim没有颜色

说明 使用xshell连接服务器的时候,使用vim打开文档没有颜色 解决方法: 1.在更目录home或者etc下找到vim的配置文件vimrc 2.vim打开它找个坑,添加下面这个东西 set t_Co=256 3.保存退出,就...

杉下
昨天
0
0
spring 资料

spring boot http://www.ityouknow.com/springboot/2016/01/06/spring-boot-quick-start.html

zaolonglei
昨天
2
0
TypeScript基础入门 - 函数 - 简介

转载 TypeScript基础入门 - 函数 - 简介 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.1.6 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能直接...

durban
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部