实现 node-mysql 实现异步操作之前,先来谈谈JS中的异步操作。

在ES6中提供了Promise对象

Promise对象的三种状态

pending(进行中)

fulfilled(已成功)

rejected(已失败)

状态的转换还是单向不可逆的过程

pending -> fulfilled

pending -> rejected

基本使用

Promise 定义后,有 resolve 和 reject 两个参数,分别对应 pending -> fulfilled状态 和 pending -> rejected状态

// 定义

const promise = new Promise(function(resolve, reject) {

// 耗时较长的操作

// 加载图片,请求接口等

if (/* 异步操作成功 */){

resolve(value);

} else {

reject(error);

}

});

执行时,无论执行 resolve 还是 reject,返回的都是 Promise对象,要拿到 Promise对象 中的值,要在 then 中获取。then 可以有两个函数,分别对应 Promise对象 中的 resolve参数 和 reject参数

// 使用

promise.then(function(resolve){

...

},function(reject){

...

})

模拟异步操作的例子

const timeout = (ms) => {

return new Promise((resolve, reject) => {

resolve('done job')

});

}

console.log(timeout(100)) // Promise { 'done job' }

timeout(100).then(res => {

console.log(res) // done job

})

仔细想想,promise对象 中的数据从 then 中才能拿到数据,但是 then 这种链式调用还是可能造成回调地狱,如果可以像同步函数一样操作,让 timeout(100) 直接有返回值,那就更好了。

ES2017 标准引入了 async 函数,在 async 函数中 promise对象 前用 await 就可以直接从 promise对象 中直接拿到数据了。

对上面的例子进行修改

在 async函数 中打印的值和在 then 中打印的一模一样

const timeout = (ms) => {

return new Promise((resolve, reject) => {

resolve('done job')

});

}

console.log(timeout(100)) // Promise { 'done job' }

timeout(100).then(res => {

console.log(res) // done job

})

const getStr = async () => {

const str = await timeout(100);

console.log(str) // done job

}

getStr()

node调用mysql异步_node-mysql实现异步操作(上)相关推荐

  1. java mysql 异步查询数据库_java 异步操作数据库

    @Autowired private ThreadPoolTaskExecutor threadPoolTaskExecutor; threadPoolTaskExecutor.execute(new ...

  2. MySQL 异步查询提高查询速度

    本文解决什么问题 什么是 MySQL 异步查询 MySQL 异步查询的优缺点 一个例子 异步查询功能 MySQLi 扩展提供了异步查询功能,需要使用 mysqlnd ( MySQL Native Dr ...

  3. node与mysql开源_node与mysql的相互使用————node+mysql

    node与mysql的相互使用----node+mysql 为什么选node???因为我是个前端. 为什么选mysql???因为成熟,稳定,听说容易学. 一.mysql数据库: mysql下载和使用我 ...

  4. nodejs mysql 异步_Gearman + Nodejs + MySQL UDF异步实现 MySQL 到 Redis 的数据同步

    1, 环境 CentOS, MySQL, Redis, Nodejs Redis是一个开源的K-V内存数据库,它的key可以是string/set/hash/list/...,因为是基于内存的,所在访 ...

  5. mysql回调地狱_5、Express异步读取Mysql数据库 callback/promise/async

    一.Node异步 Node.js 异步编程的直接体现就是回调. 有了异步方法,我们可以一边操作数据库,一边执行其他命令,在数据库操作完成后,我们将查询数据作为回调函数的参数返回.这样在执行代码时就没有 ...

  6. paip.最好的脚本语言node js 环境搭建连接mysql

    paip.最好的脚本语言node js 环境搭建连接mysql #====下载node...走十一个exe..容易的.. 1 #0----Hello world   .js 2 #---------模 ...

  7. Gearman + Nodejs + MySQL UDF异步实现 MySQL 到 Redis 的数据同步

    目录 1, 环境 2, Redis简介 3, Gearman简介 4, MySQL - Redis配合使用方案 4, 软件安装 5, MySQL UDF + Trigger同步数据到Gearman 6 ...

  8. vertx web连接超时 阻塞_Flink之基于Vertx的Mysql异步IO

    导读 在流计算中,如果以事件流为主,关联一些维度信息,就需要根据每个事件中的关键信息去数据库执行一次查询.正常的思路可能是通过mapFunction以阻塞的方式查询数据库,等待数据结果返回,然后执行下 ...

  9. mysql异步查询 java_基于 mysql 异步驱动的非阻塞 Mybatis

    虽然 spring5 也推出了 WebFlux 这一套异步技术栈,这种极大提升吞吐的玩法在 node 里玩的风生水起,但 java 世界里异步依旧不是主流,Vertx 倒是做了不少对异步的支持,但是其 ...

  10. node.js 异步_Node.js v14中的异步本地存储是什么?

    node.js 异步 Node.js 14 is out now, and with that release, it brings in Async Local Storage support. N ...

最新文章

  1. 上三角矩阵的特征值分解
  2. 蓝桥杯 扑克序列(全排列)
  3. php 所有魔术方法,PHP常用的魔术方法及规则
  4. 高翔Slambook第七讲代码解读(特征点提取)
  5. 剑指offer:平衡二叉树
  6. ubuntu 13.04下MYSQL 5.5环境搭建
  7. html怎么添加5px高的线,CSS 0.5px 细线边框的原理和实现方式
  8. DOTween Sequence的使用
  9. 营业执照在线生成_潍坊发出全省首张覆盖四大市场主体类型的“微信秒批”营业执照...
  10. 浩哥带你学习JDK1.1源码——第1天
  11. 各类符号汇总:希腊、数学等
  12. 北京大学2019年高等代数考研试题
  13. doom3灯光编辑器和FX编辑器
  14. MarkdownPad的livepreview预览无效,显示this view has crashed
  15. python计算分位数方法
  16. html里子目录,技术宅文之还电脑屏幕原来的百富美姿态_html/css_WEB-ITnose
  17. 行业研究-全球与中国牙科电子病历软件市场现状及未来发展趋势
  18. git(7)自定义 Git
  19. 06 | 职位描述(JD)不是摆设,看懂招聘岗位
  20. 杜克大学计算机数据科学,杜克大学计算机科学与信息系统Computer Science and Information Systems世界排名2020年最新排名第51-100位(QS世界排名)...

热门文章

  1. 学习型红外遥控器设计(5) 万能学习型红外遥控器实现
  2. 谷歌验证器的原理及JS实现
  3. Linux 修改用户登录名
  4. 浙江大学计算机考研机试KY132 xxx定律
  5. 需求不变,供给减少,根据基本的供需定律,WiCC的价格将会受投票的影响而上涨。
  6. U盘安装veket随身系统
  7. 东莞理工专插本计算机专业,东莞理工学院专插本介绍
  8. 深圳大学——大数据计算(一些选择题)
  9. python中map_python中map()与zip()操作方法
  10. 核心游戏大作销量超预期,游戏巨头Take-Two已经回春?