控制流程:运行两个异步数组映射
Control flow: Run two asynchronous array maps
我有两个异步函数-它们接受一个函数作为参数,当它完成(回调)时调用。
function a(item, cb) {
someAsyncOperation(function () {
cb(item)
})
}
function b(item, cb) {
someAsyncOperation(function () {
cb(item)
})
}
我有一个数组。我需要用Array.prototype.map
,在这个数组上运行这些函数两次。当两个映射都完成后,我希望有一个回调,调用两个参数:一个错误和映射的数组。
我需要什么样的控制流来实现这一点?我猜是在异步库中。
在伪代码中:
var example = [1, 2, 3]
async.series([
function () { example.map(a) },
function () { example.map(b) }
], function (error, mappedExample) {
})
是的,使用异步库。做这种事真是太棒了。
如果你需要做一个映射,然后将结果传递给下一个函数,那么你需要查看async.waterfall.
您当然可以使用async库来处理这类事情,但在这种情况下,您可以通过简单地将您的函数链接在一起来自己处理:
var items = ["a", "b", "c", "d" ],
foo = function (array, cb) {
"use strict";
array = array.map(function (element) {
return "foo-" + element;
});
cb(array);
},
baz = function (array) {
"use strict";
array = array.map(function (element) {
return "baz-" + element;
});
console.log(array);
};
foo(items, baz);
结果:
[ 'baz-foo-a', 'baz-foo-b', 'baz-foo-c', 'baz-foo-d' ]
如果你的函数特别复杂,或者你经常做这类事情,那么async绝对是有用的;然而,没有理由不能自己去做。(当然,您需要添加错误处理)
相关文章:
- 异步函数调用是否可以在两个同步语句之间完成
- 根据两个异步函数调用的结果执行
- 检查qunit中是否有两个异步调用
- 两个异步函数调用填充同一个数组
- 一个回调两个异步函数,一个是谷歌 api getDistanceMatrix
- 两个异步函数之后的回调
- 两个异步模块函数异步工作
- 如何在两个异步函数完成后运行一个函数
- 如何使两个异步API调用一个接一个地执行
- 如何从两个异步函数中获取变量的值
- 两个异步AJAX调用返回相同的结果
- 如何在node.js中的一个步骤中运行两个异步操作作为一个原子操作
- 控制流程:运行两个异步数组映射
- 等待两个异步请求
- 在angalrjs中使用两个异步调用
- ExtJS如何在两个异步事件之后设置一个动作
- 如何在链接两个异步jQuery函数时完全避开jQuery承诺
- 连接两个异步调用
- 如何按顺序执行两个异步函数
- Javascript:在进入第三个函数之前测试两个异步调用