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很大的特点就是事件驱动.非阻塞和 ...
随机推荐
- 洛谷P3779 [SDOI2017]龙与地下城(概率论+Simpson+FFT)
题面 传送门 题解 orz shadowice 正态分布 正态分布是随机变量\(X\)的一种概率分布形式.它用一个期望\(\mu\)和方差\(\sigma^2\)就可以描述,记为\(N(\mu,\si ...
- sass的基本语法与使用
一.简介 SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护.以上都是百度的,哈哈: 其实个人认为sass就是一套提高编写css效率的规则 ...
- SimpleDateFormat线程不安全及解决办法
原文链接:https://blog.csdn.net/csdn_ds/article/details/72984646 以前没有注意到SimpleDateFormat线程不安全的问题,写时间工具类,一 ...
- .net core UseHttpsRedirection() 正式环境无效
莫名其妙遇到这样的问题.这样的配置在本地可以,正式环境就不行了. ··· public void Configure(IApplicationBuilder app, Microsoft.AspNet ...
- js 事件的阶段
事件有三个阶段: 1.事件捕获阶段 :从外向内 2.事件目标阶段 :最开始选择的那个 3.事件冒泡阶段 : 从里向外 为元素绑定事件 addEventListener("没有on的事件类 ...
- js 的常用选择器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 12.谈谈this对象的理解
1.谈谈this对象的理解? 2.this指向问题 Javascript理解this对象 this是函数运行时自动生成的一个内部对象,只能在函数内部使用,但总指向调用它的对象. 通过以下几个例子加 ...
- asp 文章内容里的图片宽度过大 撑爆页面布局 解决办法
有时候帮朋友做做企业网站,还是asp+access来的快,也经济(不用开数据库空间),fck做的后台内容编辑功能,但是他们传图片的时候不靠谱,图片不管有多宽都直接up上来,把前台页面撑的是面目全非! ...
- springMVC上传功能(单文件和多文件上传)
单文件和多文件上传 首先在xxx-select.xml里面配置上传的大小和编码 <bean id="multipartResolver" class="org.sp ...
- Visual Studio Ultimate 2013 免费下载地址
ed2k://|file|cn_visual_studio_2010_ultimate_x86_dvd_532347.iso|2685982720|4AE6228933DDE49D9BFA4C3467 ...