当前位置:网站首页>async.js入门
async.js入门
2022-07-30 10:14:00 【地图学】
Async 是一个实用模块,它为使用异步 JavaScript 提供了直接、强大的功能。虽然最初设计用于Node.js,但它也可以直接在浏览器中使用。
安装
npm install --save async
使用
async的常用方法有series、parallel、waterfall、auto
1. series
依次运行tasks集合中的函数,每个函数在前一个函数完成后运行。如果系列中的任何函数将错误传递给其回调,则不再运行任何函数,并callback立即使用错误的值调用。否则,在完成后callback 接收结果数组。
const async =require("async");
async.series([
function(callback){
callback(null,'1')
},
function(callback){
callback(null,'2');
}
],function(err,result){
console.log(err);
console.log(result);
});
运行结果:
注意当Task的err参数不为空时,执行完当前,后边不再执行
const async =require("async");
async.series([
function(callback){
callback("err",'1')
},
function(callback){
callback(null,'2');
}
],function(err,result){
console.log(err);
console.log(result);
});
结果如下:
2.parallel
并行运行tasks函数集合,无需等到前一个函数完成。如果任何函数将错误传递给其回调,callback则会立即使用错误值调用 main。一旦tasks完成,结果将 callback作为数组传递给最终结果。
注意: parallel是关于并行启动 I/O 任务,而不是关于代码的并行执行。如果您的任务不使用任何计时器或执行任何 I/O,它们实际上将被串行执行。每个任务的任何同步设置部分都将一个接一个地发生。JavaScript 仍然是单线程的。
提示:用于reflect在任务失败时继续执行其他任务。
例如:
const async=require('async');
async.parallel([
function(callback){
setTimeout(()=>{
console.log("first Task");
callback(null,"1");
},1000)
},
function(callback){
setTimeout(()=>{
console.log("second Task");
callback(null,"2");
},100)
}
],function(err,result){
console.log(err);
console.log(result);
});
结果如下:
分析:
结果保持task添加顺序,而执行是异步的。
当发生错误时,立即调用完成函数,仍会把所有task执行完毕。
const async=require('async');
async.parallel([
function(callback){
setTimeout(()=>{
console.log("first Task");
callback(null,"1");
},1000)
},
function(callback){
setTimeout(()=>{
console.log("second Task");
callback("err","2");
},100)
}
],function(err,result){
console.log(err);
console.log(result);
});
结果:
3.waterfall
依次运行tasks函数数组,每个函数将其结果传递给数组中的下一个。但是,如果任何tasks一个将错误传递给他们自己的回调,则不会执行下一个函数,并且callback会立即调用 main 并返回错误
const async=require('async');
async.waterfall([
function(callback){
setTimeout(()=>{
callback(null,1,2)
},3000)
},
function(param1,param2,callback){
setTimeout(()=>{
//console.log(param1,param2);
callback(null,3)
},100)
}
],
function(err,result){
console.log(err);
console.log(result);
})
结果如下:
分析:
result返回的是最后Task的结果
4.auto
根据要求确定运行AsyncFunction的最佳顺序tasks。每个功能可以选择依赖于其他功能先完成,并且每个功能在满足其要求后立即运行。
如果任何AsyncFunction将错误传递给它们的回调,则auto序列将停止。进一步的任务将不会执行(因此任何其他依赖于它的函数都不会运行),并且callback会立即调用 main 并显示错误。
例如:
const async=require('async');
async.auto(
{
func1:function(callback){
setTimeout(()=>{
callback(null,'func1');
},3000)
},
func2:function(callback){
callback(null,'func2');
},
func3:["func1",function(param1,callback){
callback(null,'func3')
}]
},
function(err,result){
console.log(err,result);
}
);
结果如下:
中间能获取当前运行结果参数
const async=require('async');
async.auto(
{
func1:function(callback){
setTimeout(()=>{
console.log('func1');
callback(null,'func1');
},3000)
},
func2:function(callback){
console.log('func2')
callback(null,'func2');
},
func3:["func1",function(param1,callback){
console.log("param1:"+JSON.stringify(param1))
console.log('func3')
callback(null,'func3')
}]
},
function(err,result){
console.log(err,result);
}
);

边栏推荐
- OC-ARC(Automatic Reference Counting)自动引用计数
- 第1章 Kali与靶机系统
- OC - Manual Reference Counting Memory Management
- JCL learning
- Security思想项目总结
- OC-关于alloc和dealloc(还没开始写)
- 105. Construct binary tree from preorder and inorder traversal sequence (video explanation!!)
- Pytorch中 nn.Transformer的使用详解与Transformer的黑盒讲解
- Basemap和Seaborn
- 自适应控制——仿真实验一 用李雅普诺夫稳定性理论设计自适应规律
猜你喜欢

神经网络学习笔记3——LSTM长短期记忆网络

JCL 学习

STM32CubeMX configuration to generate FreeRTOS project

flyway的快速入门教程

死锁的理解

线上靶机prompt.ml

Re16: Read the paper ILDC for CJPE: Indian Legal Documents Corpus for Court Judgment Prediction and Explanation

第1章 Kali与靶机系统

SST-Calib: A lidar-visual extrinsic parameter calibration method combining semantics and VO for spatiotemporal synchronization calibration (ITSC 2022)

Meikle Studio - see the actual combat notes of Hongmeng equipment development five - drive subsystem development
随机推荐
Domino服务器SSL证书安装指南
Always remember: one day you will emerge from the chrysalis
GNOME 新功能:安全启动被禁用时警告用户
JCL learning
js对数组操作移动进行封装
这种叫什么手法
【HarmonyOS】【ARK UI】HarmonyOS ets语言怎么实现双击返回键退出
[Qualcomm][Network] 网络拨号失败和netmgrd服务分析
Scrapy爬虫之网站图片爬取
Meikle Studio-Look at Hongmeng Device Development Practical Notes 7-Network Application Development
Multithreading--the usage of threads and thread pools
flowable workflow all business concepts
电压跟随器不要随便加
Selected System Design | Design of CAN Bus Controller Based on FPGA (with Code)
spark udf accepts and handles null values.
Adaptive Control - Simulation Experiment 1 Designing Adaptive Laws Using Lyapunov's Stability Theory
105. Construct binary tree from preorder and inorder traversal sequence (video explanation!!)
(BUG record) No module named PIL
360发布面向未来的EDR,全方位守护政企用户终端安全
Redis Desktop Manager 2022.4.2 发布