文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

请在移动端使用 先选择画笔

先选择画笔 请在移动端使用 https://lxz096.github.io/Canvas-/画板.html

壹峰
8分钟前
0
0
getSupportFragmentManager().beginTransaction().add报错cannot resolve method 'add'

getSupportFragmentManager().beginTransaction().add报错cannot resolve method 'add' 是导包的问题,所有包要保持一致,有app下的包,要保证都为app下的包 v4的包要保证都为v4的包...

lanyu96
22分钟前
0
0
linux 安装redis

Redis的安装 http://redis.io/download 官方安装例子 $ wget http://download.redis.io/releases/redis-4.0.11.tar.gz $ tar xzf redis-4.0.11.tar.gz $ cd redis-4.0.11 $ make //启动 $ sr......

苏牧影子
24分钟前
1
0
图(graph)

图(graph) 图是非线性数据结构,是一种较线性结构和树结构更为复杂的数据结构,在图结构中数据元素之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。 1、概念 1.定义 图(g...

星汉
28分钟前
1
0
好用的vue组件

http://elickzhao.github.io/2017/08/vue%E4%B8%80%E4%BA%9B%E7%89%B9%E5%88%AB%E6%9C%89%E7%94%A8%E7%9A%84%E6%8F%92%E4%BB%B6/...

Littlebox
44分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部