无论搞什么东西 其实都是从环境开始搭建的
async 乍一看 像是 async 和 await 中的那个 关键字呢
今天讲解的并不是 es7中的async 而是 nodejs 中的一个 插件 aysnc.js
不过他们有相似的点 就是 解决异步执行的问题
特别是 我们node.js 去请求第三方接口 作为 中间服务器 来使用的话
第一步当然是安装了
npm i async --save
这里只说几种常用的哈
1. async.series
这个函数是 可以传入几个 异步执行的函数 执行顺序是 串联的 依次 执行
最终 消耗的事件是 异步全部执行完成 后 所消耗的事件
下面的这个例子 用时间 是 2000 + 1000 +3000 至少大于 6000 毫秒
async.series([],callback) ; 第一个参数 可以是 数组 类型 也可以是 对象类型
区别是最终的输出结果的格式 取决于你第一个参数 传入的格式
const async = require('async');
// 从上到下 依次执行
function task1(callback) {
setTimeout(() => {
callback(null, "1111")
}, 2000);
}
function task2(callback) {
setTimeout(() => {
callback(null, "222")
}, 1000);
}
function task3(callback) {
setTimeout(() => {
callback(null, "333")
}, 3000);
}
// 上面执行顺序 顺序执行 执行总时间是所有的时间之和 最后再执行下面的回调函数
async.series({task1, task2, task3}, function(err, results) {
if(err) {
console.log(err);
return;
}
console.log('series ---------',results);
})
2 . async.parallel 并行执行
几个函数并行执行 这个执行的事件就取决于 消耗事件最长的那个 函数了
// 上面执行顺序 并行执行 执行时间取决于最长的那个时间 最后执行下面的回调函数
async.parallel([task1, task2, task3], function(err, results) {
if(err) {
console.log(err);
return;
}
console.log('parallel -----------', results);
})
3. async.waterFall
瀑布流 下一个函数的执行依赖于 上一个函数的 执行解决
打个比方就好像是 我们前端 发送的ajax请求 a 请求 b 请求 b请求发送的参数需要 a请求成功之后 才能获取到 也就是说 b 请求 依赖于 a请求
// 瀑布流 后来执行的函数依赖上一个函数执行的结果
var task4 = function(callback) {
setTimeout(() => {
callback(null, '444')
}, 1000);
}
var task5 = function(q,callback) {
console.log('task4传入的值是'+q);
callback(null, '555')
}
var task6 = function(q,callback) {
console.log('task5传入的值是'+q);
callback(null, '666')
}
async.waterfall([task4, task5, task6], function(err, data) {
if(err) {
console.log(err);
return ;
}
console.log(data)
})
还有一个 async.auto 也比较常用
不过这个之前我已经有比较详细的讲解 这个就不一一赘述了
关注我 持续更新前端知识