Nodejs让异步变成同步的方法
异步给我们带来的性能是明显的,但同时也给我们带了复杂的业务逻辑过程,特别请求依赖多的时候,下面我们来看看如何解决此类这样的问题。
使用方法
在这里我们信赖于co
这个库。
npm install co --save #or yarn add co
模拟
# 登录请求 let loginReq = new Promise((resolve,reject)=>{ setTimeout(function () { resolve({success:true}) },2000) }); # 获取用户信息 let userInfoReq = new Promise((resolve,reject)=>{ setTimeout(function () { resolve({nickName:'dounine'}) },2000) }); # 异步处理过程 loginReq.then(res=>{ if(res.success){ userInfoReq.then(userInfo=>{ console.log('获取成功') ## 如果还有信赖,需要继续写,还没有逻辑业务参与 }) } }) # 同步处理过程 co(function *(){ let loginInfo = yield loginReq; if(loginInfo.success){ let userInfo = yield userInfoReq; console.log('获取成功') } })
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
相关推荐
-
Node.js Event Loop各阶段讲解
Event Loop阶段描述图 timers timer阶段处理setTimeout于setInterval回调,开始处理的时机与poll阶段有关联. pending callbacks 该阶段执行某些系统操作的回调,比如TCP套接字在连接时收到ECONNREFUSED. 网上有一些将该阶段称为I/O callbacks的文章都是过时错误的,具体可以移步Node.js官方库下面的这个issue: #1118. idle, prepare 内部使用,忽略. poll poll是一个核心阶段,等新I
-
node.js中express模块创建服务器和http模块客户端发请求
首先下载express模块,命令行输入 npm install express 1.node.js中express模块创建服务端 在js代码同文件位置新建一个文件夹(www_root),里面存放网页文件等,就可以在浏览器中访问了 var express = require("express"); var path = require("path"); var app = express(); //目录 (当前目录下的www_root目录) app.use(expre
-
Node.js Stream ondata触发时机与顺序的探索
上次写Stream pipe细节时,在源码中发现一段无用逻辑,由此引发了对Stream data事件触发时机与顺序的探索. 无用逻辑 当时研究pipe细节是基于Node.js v8.11.1的源码,其中针对上游的ondata事件处理有如下一段代码: // If the user pushes more data while we're writing to dest then we'll end up // in ondata again. However, we only want to in
-
零基础之Node.js搭建API服务器的详解
零基础之Node.js搭建API服务器 这篇文章写给那些Node.js零基础,但希望自己动手实现服务器API的前端开发者,尝试帮大家打开一扇门. HTTP服务器实现原理 HTTP服务器之所以能提供前端使用的API,其实现原理是服务器保持监听计算机的某个端口(通常是80),等待客户端请求,当请求到达并经过一系列处理后,服务器发送响应数据给到前端. 平时大家通过Ajax调用API,即是发起一次请求,经过服务器处理后,得到结果,然后再进行前端处理.如今使用高级编程语言,要实现服务器那部分功能已经变得非
-
VUE引入第三方js包及调用方法讲解
VUE引入第三方js包及调用方法 1.首先是第三方js包存放的位置 一定要放在 static 目录下否则引用不到 2.网上查找到的引用第三方包的四种方式 实测部分第三方js包没法使用,较稳定的方式是在 index.html 中引入js包 <script src="static/xxxxx.js"></script> 3.mounted 是初始化加载的方法 可以理解为jquery 中的页面加载完的初始化方法 如果第三方包有初始化需要调用的一些函数等 需要写在mou
-
JavaScript使用小插件实现倒计时的方法讲解
CountDown.js 一个用来实现简单页面倒计时的轻量级工具 API CountDown.openTimeCountBySeconds()根据要计时的秒数打开一个显示剩余时间的倒计时 参数: Ele: 放置倒计时的元素 CountDownSeconds: 要计时的秒数 Sign: 用于给倒计时设置标记 (可以给多个倒计时设置同一个标记) Divider: 分割时分秒的分割符 EndFunc: 倒计时结束时执行的方法 ps:以上均为可选参数 示例 CountDown.openTimeCount
-
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
错误原因 在设置npm的cache和predix时,因为使用参考其他教程照抄,而没有修改为本机对应路径,本机上并没有这个地址,因此造成了错误. 教程代码: npm config set cache "D:\Develop\nodejs\node_global" npm config set prefix "D:\Develop\nodejs\node_cache" 结果就是输入与npm任何有关的命令时,都会报错: 错误代码文本形式: Error: UNKNOWN:
-
nodejs同步调用获取mysql数据时遇到的大坑
mysql调用获取数据,只能是异步方式返回结果,不能同步获取结果,因此,须在回调函数中编写处理事件.期间看了下Aysnc.js,是用于多个要返回回调函数的事件,将这些事件有序的组织起来,最后只返回一个回调函数,并没有改变异步的本质,而是将多个异步整合为一个异步,从而满足写程序的需求. 错误示范 获取数据库中的数据函数 var _getUser = function(name) { var sql = "SELECT * FROM " + TABLE + " WHERE use
-
js获取form表单中name属性的值
在项目中因为动态表单无法确定标签name属性的值,因此需要即时获取以便进行存储.前端代码如下: <div class="control-group"> <label class="control-label">土拨鼠常挖坑</label> <form:input path="formAttribute1" class="input-xlarge" value=""
-
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
首先下载websocket模块,命令行输入 npm install ws 1.node.js中ws模块创建服务端 // 加载node上websocket模块 ws; var ws = require("ws"); // 启动基于websocket的服务器,监听我们的客户端接入进来. var server = new ws.Server({ host: "127.0.0.1", port: 6080, }); // 监听接入进来的客户端事件 function webs
随机推荐
- 怎样使用Cookie跟踪来访者?
- 浅谈c语言中一种典型的排列组合算法
- python3.5实现socket通讯示例(TCP)
- PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
- JavaScript作用域示例详解
- 一步步教你利用Canvas对图片进行处理
- js和php邮箱地址验证的实现方法
- php_pdo 预处理语句详解
- 用expect实现ssh自动登录服务器并进行批量管理的实现方法
- Python中装饰器兼容加括号和不加括号的写法详解
- sqlserver 比较两个表的列
- javascript实现五星评价代码(源码下载)
- 表单的一些基本用法与技巧
- 勾子程序q.dll大战!清杀方法
- 详解Java中使用externds关键字继承类的用法
- Android音乐播放器制作 扫描本地音乐显示在手机(一)
- 随时给自己贴的图片加文字的php代码
- wxWidgets自定义按钮的方法
- 在Linux中使用tcpdump命令捕获与分析数据包详解
- 详解vue项目中如何引入全局sass/less变量、function、mixin