以数组的元素为参数,逐个运行异步函数
日期: March 12, 2021 作者:网站维护
以数组的每一个项作为参数,运行异步的函数。需要在等一个运行完之后运行下一个。变成所谓同步。
async模块提供了each这个函数,网上查了下,发现其实自己也可以写一个。
function asynhand(a, callback) {
console.log('hi', a);
setTimeout(callback, 2000);
}
var i = 0;
var running = 0;
function each(arr, itera) {
if (i >= arr.length) return;
itera(arr[i], () => each(arr, itera));
i++;
}
list = ['a','b','c','d','e','f'];
each(list, asynhand);
可以同时运行多个,lim为同时运行的限制数量。把回调函数单独写到了一边,用箭头函数感觉不好读。
function asynhand(a, callback) {
console.log('hi', a);
setTimeout(callback, 2000);
}
var i = 0;
var running = 0;
function eachlim(arr, itera, lim) {
if (i >= arr.length) return;
itera(arr[i], c);
running++;
i++;
if ( running < lim ) eachlim(arr, itera, lim);
function c(){
running--;
eachlim(arr, itera, lim);
}
}
list = ['a','b','c','d','e','f'];
eachlim(list, asynhand, 3);
广告内容为平台自动生成