node调用mysql异步_node-mysql实现异步操作(上)
实现 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实现异步操作(上)相关推荐
- java mysql 异步查询数据库_java 异步操作数据库
@Autowired private ThreadPoolTaskExecutor threadPoolTaskExecutor; threadPoolTaskExecutor.execute(new ...
- MySQL 异步查询提高查询速度
本文解决什么问题 什么是 MySQL 异步查询 MySQL 异步查询的优缺点 一个例子 异步查询功能 MySQLi 扩展提供了异步查询功能,需要使用 mysqlnd ( MySQL Native Dr ...
- node与mysql开源_node与mysql的相互使用————node+mysql
node与mysql的相互使用----node+mysql 为什么选node???因为我是个前端. 为什么选mysql???因为成熟,稳定,听说容易学. 一.mysql数据库: mysql下载和使用我 ...
- nodejs mysql 异步_Gearman + Nodejs + MySQL UDF异步实现 MySQL 到 Redis 的数据同步
1, 环境 CentOS, MySQL, Redis, Nodejs Redis是一个开源的K-V内存数据库,它的key可以是string/set/hash/list/...,因为是基于内存的,所在访 ...
- mysql回调地狱_5、Express异步读取Mysql数据库 callback/promise/async
一.Node异步 Node.js 异步编程的直接体现就是回调. 有了异步方法,我们可以一边操作数据库,一边执行其他命令,在数据库操作完成后,我们将查询数据作为回调函数的参数返回.这样在执行代码时就没有 ...
- paip.最好的脚本语言node js 环境搭建连接mysql
paip.最好的脚本语言node js 环境搭建连接mysql #====下载node...走十一个exe..容易的.. 1 #0----Hello world .js 2 #---------模 ...
- Gearman + Nodejs + MySQL UDF异步实现 MySQL 到 Redis 的数据同步
目录 1, 环境 2, Redis简介 3, Gearman简介 4, MySQL - Redis配合使用方案 4, 软件安装 5, MySQL UDF + Trigger同步数据到Gearman 6 ...
- vertx web连接超时 阻塞_Flink之基于Vertx的Mysql异步IO
导读 在流计算中,如果以事件流为主,关联一些维度信息,就需要根据每个事件中的关键信息去数据库执行一次查询.正常的思路可能是通过mapFunction以阻塞的方式查询数据库,等待数据结果返回,然后执行下 ...
- mysql异步查询 java_基于 mysql 异步驱动的非阻塞 Mybatis
虽然 spring5 也推出了 WebFlux 这一套异步技术栈,这种极大提升吞吐的玩法在 node 里玩的风生水起,但 java 世界里异步依旧不是主流,Vertx 倒是做了不少对异步的支持,但是其 ...
- 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 ...
最新文章
- 上三角矩阵的特征值分解
- 蓝桥杯 扑克序列(全排列)
- php 所有魔术方法,PHP常用的魔术方法及规则
- 高翔Slambook第七讲代码解读(特征点提取)
- 剑指offer:平衡二叉树
- ubuntu 13.04下MYSQL 5.5环境搭建
- html怎么添加5px高的线,CSS 0.5px 细线边框的原理和实现方式
- DOTween Sequence的使用
- 营业执照在线生成_潍坊发出全省首张覆盖四大市场主体类型的“微信秒批”营业执照...
- 浩哥带你学习JDK1.1源码——第1天
- 各类符号汇总:希腊、数学等
- 北京大学2019年高等代数考研试题
- doom3灯光编辑器和FX编辑器
- MarkdownPad的livepreview预览无效,显示this view has crashed
- python计算分位数方法
- html里子目录,技术宅文之还电脑屏幕原来的百富美姿态_html/css_WEB-ITnose
- 行业研究-全球与中国牙科电子病历软件市场现状及未来发展趋势
- git(7)自定义 Git
- 06 | 职位描述(JD)不是摆设,看懂招聘岗位
- 杜克大学计算机数据科学,杜克大学计算机科学与信息系统Computer Science and Information Systems世界排名2020年最新排名第51-100位(QS世界排名)...