1。什么是异步编程
异步编程意味着由于异步I/O和其他因素,
执行结果不能
同步获得。
在回调
函数中的代码为下一步的写作风格,如setTimeout函数,Ajax请求,等等。
实例:
对于(var i = 1;i < 3;i + +){
setTimeout(){()函数(
console.log(我);
},0);
};
这里的大多数人认为输出是123,或者333,实际上,它会输出444。
下面是我们正在讨论的异步编程。
高级
功能的定义
这就是为什么这里提到高级函数,因为高级函数是异步编程的基础。
那么高级功能是什么
事实上,高级函数是将函数用作
参数或作为返回值使用。
实例:
函数测试(v){
返回函数(){
返回v;
}
}
事实上,一个函数被用作返回值。
2。过程
控制 函数有:
系列
瀑布
并行 parallellimit
…
串行函数串行执行
它的功能是按
顺序执行它。
async.series({
函数(回调){
回调(null,1);
},
二:函数(回调){
回调(null,2);
}
}函数(
错误,结果){
console.log(结果);
});
输出:{:1,二:2 }
系列函数的第一个参数可以是数组或JSON对象。
参数的
类型不同,这将
影响返回数据的格式。
瀑布功能瀑布流
瀑布和串联函数之间有许多相似之处,它们按顺序执行。
不同的是,瀑布的每个函数生成的值将传递给下一个函数,而序列没有这个函数。示例如下:
Async.waterfall({
函数(回调){
回调(空的话,');
},
功能(arg1,arg2,回调){
现在equals'one'and arg1 arg2 /现在equals'two
回调(null,);
},
功能(arg1,回调){
现在equals'three ' / / arg1
回调(null,'done);
}
}函数(错误,结果){
现在equals'done ' / /结果
console.log(结果);
});
同样重要的是要注意,瀑布的
任务参数只能是数组类型。
当一个函数出错时,它的错误直接传递给最终回调,结果被丢弃,后一个函数不再执行。
并行(任务,{回调})
并行函数是一个多个函数的并行执行,每个函数
都是立即执行的,不需要
等待其他函数先执行。
传递给最终回调的数组中的数据是在任务中声明的顺序,而不是完成的顺序。示例如下:
Async.parallel({
函数(回调){
回调(null,话);
},
函数(回调){
回调(null,);
}
},
函数(错误,结果){
});
任务参数可以是数组或JSON对象,与串联函数相同。
任务参数类型不同,返回的结果格式将不同。
ParallelLimit(任务限制,{回调})
的parallellimit功能类似于平行,但它有一个参数的限制。
受限参数限制任务只能并发一定数量的并发性,而不是非限制并发性。例子如下:
Async.parallelLimit({
函数(回调){
回调(null,话);
},
函数(回调){
回调(null,);
}
},
2,
函数(错误,结果){
console.log(结果);
});