node.js async/await 继发执行与并发执行
async/await 继发执行与并发执行,看如何控制
两个异步函数 foo bar
- function foo() {
- return new Promise((resolve, reject) => {
- setTimeout(() => {
- console.log('foo:' + new Date().toLocaleString())
- resolve('foo')
- }, 2000)
- })
- }
- function bar() {
- return new Promise((resolve, reject) => {
- setTimeout(() => {
- console.log('bar:' + new Date().toLocaleString())
- resolve('bar')
- }, 2000)
- })
- }
继发执行
- //继发执行
- async function main() {
- console.log('beginTime:' + new Date().toLocaleString())
- var foostr = await foo();
- console.log(new Date().toLocaleString())
- console.log(foostr);
- var barstr = await bar();
- console.log(new Date().toLocaleString())
- console.log(barstr);
- console.log('endTime:' + new Date().toLocaleString())
- }
- //继发执行
- async function main2() {
- let docs = [foo, bar];
- console.log('beginTime:' + new Date().toLocaleString())
- for (let doc of docs) {
- var str = await doc();
- console.log(new Date().toLocaleString())
- console.log(str);
- }
- console.log('endTime:' + new Date().toLocaleString())
- }
并发执行
- //并发执行
- async function async_main() {
- console.log('beginTime:' + new Date().toLocaleString())
- let [get_foo, get_bar] = await Promise.all([foo(), bar()]);
- console.log(new Date().toLocaleString());
- console.log(get_foo);
- console.log(get_bar);
- console.log('endTime:' + new Date().toLocaleString())
- }
- //并发执行
- async function async_main4() {
- let docs = [foo(), bar()];
- console.log('beginTime:' + new Date().toLocaleString())
- for (let doc of docs) {
- var str = await doc;
- console.log(new Date().toLocaleString())
- console.log(str);
- }
- console.log('endTime:' + new Date().toLocaleString())
- }
- //并发执行
- async function async_main2() {
- console.log('beginTime:' + new Date().toLocaleString())
- let fooPromise = foo();
- let barPromise = bar();
- let get_foo = await fooPromise;
- console.log(new Date().toLocaleString());
- console.log(get_foo);
- let get_bar = await barPromise;
- console.log(new Date().toLocaleString());
- console.log(get_bar);
- console.log('endTime:' + new Date().toLocaleString())
- }
- //并发执行 但是 会先执行 endTime
- async function async_main3() {
- let docs = [foo, bar];
- console.log('beginTime:' + new Date().toLocaleString())
- docs.forEach(async (val) => {
- var str = await val();
- console.log(new Date().toLocaleString())
- console.log(str);
- })
- console.log('endTime:' + new Date().toLocaleString())
- }
node.js async/await 继发执行与并发执行的更多相关文章
- [node.js] async/await如何优雅处理异常?
node.js的世界,从callback开始,不会止于async. 所有人都在骂为什么不能完全进化,其实我感觉这就是老外的细心,为了承上.这也就是为什么async其实就是promise一样,假如不是一 ...
- 关于async/await、promise和setTimeout执行顺序
先来一道关于async/await.promise和setTimeout的执行顺序的题目: async function async1() { console.log('async1 start'); ...
- js async await 终极异步解决方案
既然有了promise 为什么还要有async await ? 当然是promise 也不是完美的异步解决方案,而 async await 的写法看起来更加简单且容易理解. 回顾 Promise Pr ...
- js async/await
一.async 带async关键字的函数,是声明异步函数,返回值是promise对象,如果async关键字函数返回的不是promise,会自动用Promise.resolve()包装. async f ...
- [转] js async await 终极异步解决方案
阅读目录 回顾 Promise async await 字面理解 async.await 如何执行 await 操作符 总结 既然有了promise 为什么还要有async await ? 当然是pr ...
- Node.js——Async
一:流程控制 为了适应异步编程,减少回调的嵌套,我尝试了很多库.最终觉得还是async最靠谱. 地址:https://github.com/caolan/async Async的内容分为三部分: 流程 ...
- 【原创】cs+html+js+css模式(七): 顺序执行与并发执行问题,IIS7及其以上版本的抛错问题解决
在进行开发的过程中,针对于这种模式,我们继承的IRequiresSessionState,这种对于我们的同一个IIS的执行中是顺序执行即一个ajax请求处理完成后,才能执行下一个ajax, ...
- node.js async 几个函数
async.waterfallasync.seriesasync.parallelasync.auto http://my.oschina.net/huangsz/blog/176203http:// ...
- node.js:怎样同时执行多条SQLs,且只有一个回调
本文主要介绍开源node.js库mysql-queries,其可以同时执行多条SQLs,且只有一个回调.同时抛砖引玉,与大家交流node.js开发经验. node.js很大的特点就是事件驱动.非阻塞和 ...
随机推荐
- memcached 和 redis 安装
memcached 1.搭建好lnmp 2.安装依赖包 yum install -y libevent-devel 3.安装memcached $ cd /usr/local/src $ wget h ...
- Windows下Python第三方.whl的安装
1.改成.zip 2.解压 3.然后把解压出来的文件放到C:\Python27\Lib\site-packages下即可.
- Python之路Python全局变量与局部变量、函数多层嵌套、函数递归
Python之路Python全局变量与局部变量.函数多层嵌套.函数递归 一.局部变量与全局变量 1.在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量.全局变量作用域是整个程序,局 ...
- 犯得错误QAQ
1.十年OI一场空,不开longlong见祖宗(丢过150分) 2.计算完了再开数组,开的足足的.不要少开0:(丢过一共200分) 3.最大值,最小值一定开成7个f.(丢了20分). 4.freope ...
- 前端模块开发的基础代码,兼容amd,cmd标准,也可以直接使用window来引用对象
(function(global, factory) { if (typeof define === 'function' && define.amd) { define(functi ...
- SDUT OJ 数据结构实验之链表四:有序链表的归并
数据结构实验之链表四:有序链表的归并 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Desc ...
- 获取当前按钮或者html的ID名称
今天做的上传图片,点击图片删除. 随机给图片id,获取图片id,然后删除图片. 由于图片id是随机的,用点击img或者点击class,获取id都不行,最后用onclick事件获取. js代码如下: $ ...
- GCD - Extreme (II) UVA - 11426 数学
Given the value of N , you will have to nd the value of G . The de nition of G is given below: G = i ...
- there is already 'RtController' bean method 项目报错
今天开发项目时候发现项目报错启动的时候,也没有具体指的是哪一行报错,其实很简单的知道,首先看下报错信息: there is already 'RtController' bean method pub ...
- PHP编程入门与应用
基础语法.流程控制语句.数组的应用.字符串的应用————3天 PHP函数————3天 面向对象————3天 文件处理————2天 获取页面数据.会话处理————3天 数据库————5天 XML和JSO ...