试图围绕一些基本的异步编程概念。
现在我基本上有两个函数,现在我们称它们为 getOne 和 getAll。getAll 本质上是一系列循环并调用 getOne,然后将其映射到哈希并将其发送回链中。这基本上是我在coffeescript中所拥有的:
getOne = (key, callback) ->
try
# find object referenced by key
object = "blah blah"
callback(null, object)
catch(error)
callback(error, null)
getAll = (keys, callback) ->
results = {}
try
count = keys.length
for i, key of keys
count--
getOne key, (err, result) ->
if(err)
# do something
else
results[key] = result
if count is 0
callback "", results
catch
callback error, results
上面的代码基本上输出了一个哈希,其中键不一定与预期的数据对齐,这是预期的 for 循环异步处理的方式。但是,我似乎无法想出一个不阻塞循环并导致所有内容都被串行处理而不是保持并行处理的解决方案。
我错过了什么?