知道async for each内部的async foreach何时完成
know when async foreach inside async for each has finished
我正在使用node.js中的异步库,并且我有一个async.forEach调用在另一个async内部。forEach调用和我需要知道异步调用s何时完全完成处理。
代码示例:
var content = '...';
var resultArr = [];
async.each(regexArr, function(regex) {
var matches = content.match(regex);
async.each(matches, function(match) {
var result = regex.exec(match);
regex.lastIndex = 0;
resultArr.push(result[1]);
});
}, function(err) {
// I need to know when ALL inner async.forEach finished processing
// for ALL outside async.forEach and then do something with the resultArr
});
您可以通过使用async.map
和一个额外的回调来处理内部回调结果的集合来强制同步。
尽管如此,正如其他人所说,使用JS,执行是在单个线程上进行的,所以我首先包含了更简单的同步版本。
// Synchronous version is just as good for Regex stuff.
var content = '...';
var resultArr = [].concat.apply([], regexArr.map(function(regex) {
return (content.match(regex) || []).map(function(match) {
return (regex.exec(match) || [])[1];
});
}));
// IN THIS EXAMPLE, SYNCHRONOUS WOULD WORK TOO...
var content = '...';
collectRegexResults(content, regexArr, function(err, flatRegexResults) {
// Handle errors.
// flatRegexResults is equivalent to resultArr
// from your question.
});
function collectSingleRegexFor(content) {
return function(regex, passBackGroup) {
var matches = content.match(regex);
// Note use of || [] if match is null
async.map(matches || [], function(match, finishSingle) {
try {
finishSingle(null, regex.exec(match)[1]);
} catch (err) {
finishSingle(err, null);
}
}, passBackGroup); // Submits to outer as regexSets element
};
}
function collectRegexResults(text, regexArr, doStuffPostComplete) {
async.map(regexArr, collectSingleRegexFor(text), function(err, regexSets) {
if (err) {
return doStuffPostComplete(err);
}
// Flattening the Array again.
doStuffPostComplete(null, [].concat.apply([], regexSets));
});
}
相关文章:
- Foreach无法在Typescript中工作
- $rootScope未使用forEach进行更新
- 如何制作简单的php'在Javascript中的foreach等价物
- jQuery加载的async和ready函数不工作
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- 如果数组仍在执行,async.forEach()将运行我添加到数组中的新元素
- 正确使用async(带有forEach)
- Async foreach in javascript
- Node.js: forEach inside async.series
- 在 async.each 的帮助下调用 foreach 中的同步函数(带回调)
- 知道async for each内部的async foreach何时完成
- async each and foreach functions
- 在Foreach循环中调用Async方法
- 变量在异步函数中被async覆盖.forEach循环
- Node.js使用async.forEach与异步操作
- async await in forEach
- Node.js的一个forEach循环中的Async承诺在另一个then语句中
- forEach, async and callbacks
- async/await在forEach中不起作用
- Async.forEach 调用回调