我知道我要发布这个然后让它工作,更不用说标题了,但是......
我的情况是,我需要对给定数组中的每个元素执行一些异步代码,然后在所有元素都完成后进行一些检查。通常,如果我在这里使用 async.js,但是我这样做的方式并没有得到我想要的结果。
所以这是我的逻辑,我想我可以创建一个函数数组,但是我这样做的方式似乎让 async.js 在结果中返回了一个函数列表。
findLeadThatCanBeTaken : (leads, user, manualTake, cb) =>
if(leads.length == 0) then return cb(null, null)
funcArr = []
self = this
for lead in leads
fun = (callback) ->
console.log(lead.state)
State.get lead.state, (e, state) ->
if !state or state.canBeCalled(self.currentTime())
return callback(null, lead._id.toString)
return callback(null, null)
funcArr.push(fun)
async.parallel funcArr, (e, r) ->
if (e)
return cb(message:'No leads can be called at the current time', null)
id = _.compact(r)
id = r[0] if r.length
if (!id || !id.length)
return cb(message:'No leads can be called at the current time', null)
lead = _.filter leads, (l) -> return l._id.toString() == id
# Code handling
@takeLead(lead, user, cb)
我 90% 确定问题是我正在创建的这个数组没有像我想的那样被分配,但我不确定。有人知道我在这里做错了什么吗?