Nodejs让异步变成同步的方法


Posted in NodeJs onMarch 02, 2019

异步给我们带来的性能是明显的,但同时也给我们带了复杂的业务逻辑过程,特别请求依赖多的时候,下面我们来看看如何解决此类这样的问题。

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('获取成功')
 }
})

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

NodeJs 相关文章推荐
nodejs之请求路由概述
Jul 05 NodeJs
Google官方支持的NodeJS访问API,提供后台登录授权
Jul 29 NodeJs
轻松创建nodejs服务器(9):实现非阻塞操作
Dec 18 NodeJs
NodeJs基本语法和类型
Feb 13 NodeJs
nodejs 中模拟实现 emmiter 自定义事件
Feb 22 NodeJs
Nodejs全局安装和本地安装的不同之处
Jul 04 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
Nodejs读取文件时相对路径的正确写法(使用fs模块)
Apr 27 NodeJs
详解nodejs模板引擎制作
Jun 14 NodeJs
nodejs更改项目端口号的方法
May 13 NodeJs
手把手教你如何使用nodejs编写cli命令行
Nov 05 NodeJs
nodejs+koa2 实现模仿springMVC框架
Oct 21 NodeJs
nodejs使用async模块同步执行的方法
Mar 02 #NodeJs
NodeJS实现同步的方法
Mar 02 #NodeJs
PHPStorm中如何对nodejs项目进行单元测试详解
Feb 28 #NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 #NodeJs
深入理解nodejs搭建静态服务器(实现命令行)
Feb 05 #NodeJs
Nodejs实现的操作MongoDB数据库功能完整示例
Feb 02 #NodeJs
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
Feb 02 #NodeJs
You might like
php pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
PHP5.4中json_encode中文转码的变化小结
2013/01/30 PHP
基于Zend的Captcha机制的应用
2013/05/02 PHP
PHP基于curl模拟post提交json数据示例
2018/06/22 PHP
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
jQuery过滤选择器详解
2015/01/13 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
使用Promise链式调用解决多个异步回调的问题
2017/01/15 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
2018/09/05 jQuery
ES7之Async/await的使用详解
2019/03/28 Javascript
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
[33:39]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第二局
2016/02/27 DOTA
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
Python线程详解
2015/06/24 Python
python实现图片批量压缩程序
2018/07/23 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
Python操作redis和mongoDB的方法
2019/12/19 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
Python+appium框架原生代码实现App自动化测试详解
2020/03/06 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
实习评语
2013/12/16 职场文书
交通安全横幅标语
2014/10/07 职场文书
杭白菊导游词
2015/02/10 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
护士求职自荐信范文
2015/03/04 职场文书
2019森林防火宣传标语大全!
2019/07/03 职场文书
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
Redis集群新增、删除节点以及动态增加内存的方法
2021/09/04 Redis