文档章节

node异步和同步

西米粟
 西米粟
发布于 2017/04/27 18:37
字数 249
阅读 6
收藏 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
【深入浅出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
NODEJS如何优雅的实现同步?

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

方小葱
2017/08/11
285
4

没有更多内容

加载失败,请刷新页面

加载更多

矿难让显卡压了那么多货咋办?NV如是说

在苏州 GTC 开幕的几天前,英伟达刚刚遭遇了一次股价的腰斩。 近来加密货币的热度渐低,受到挖矿热潮照顾许多的英伟达「矿机」销量受到打击,甚至出现了严重的库存危机,加上近来刚刚发的 RT...

linux-tao
5分钟前
0
0
Python学习日记5|BeautifulSoup中find和find_all的用法

Python学习日记5|BeautifulSoup中find和find_all的用法 是蓝先生 关注 2016.04.20 11:26* 字数 930 阅读 37205评论 11喜欢 10 今天是4.20号。 前天晚上看到蒋方舟的一句话: 不要左顾右盼。慢...

linjin200
5分钟前
0
0
浅析Vue.js 中的条件渲染指令

1 应用于单个元素 Vue.js 中的条件渲染指令可以根据表达式的值,来决定在 DOM 中是渲染还是销毁元素或组件。 html: <div id="app"><p v-if="type===1">拌面</p><p v-else-if="type==...

开元中国2015
6分钟前
0
0
聊天机器人最难理解的 10 个词汇

简评:现在,越来越多的「聊天机器人」凭借着人工智能能与人类对话,甚至编写新闻。人们该如何判断对方是一个血肉之躯,还是一个可笑的算法?又该如何判断一个小说故事是由一台机器编写的,而...

极光推送
11分钟前
0
0
开源 java CMS - FreeCMS2.8会员我的评论

项目地址:http://www.freeteam.cn/ 我的评论 从左侧管理菜单点击我的评论进入。在这里可以查看当前登录会员的所有评论记录。 删除评论 选择评论然后点击删除按钮可以完成删除操作。 为了防止...

freeteam
35分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部