Q.all 没有从数组中调用 promise
Q.all not calling promises from array
伙计们。我正在尝试迁移用户,但从未调用过承诺。
User = mongoose.model 'User'
User.find({"hisId" : {$exists : true}}).exec (err, doc)->
if err
console.error err
process.exit()
if not doc or doc.length < 1
process.exit()
i = 0
promiseArray = []
while i < doc.length
updateFunc = (doc) ->
defer = Q.defer()
User.update({
"_id" : ObjectId(doc[i].juniorId)
"friends.user": ObjectId(doc[i]._id)
},{
$set:
"friends.$.canAdmin" : true
}, (err, updateResult) =>
if err
console.error err
defer.reject()
defer.resolve()
)
return defer.promise
updateFunc.bind(null, doc)
promiseArray.push updateFunc
i++
Q.all(promiseArray).then(->
console.log 'Why did get here before promises all fulfilled?'
).done ( ->
process.exit()
)
我用 Q.promise 解决方案试过了,但它也不起作用。 Promise数组中充满了函数,我查了下
promise 数组填充了函数,但它没有填充 promise,因此它已实现。
改为promiseArray.push(updateFunc(doc))
伙计们。我正在尝试迁移用户,但从未调用过承诺。
User = mongoose.model 'User'
User.find({"hisId" : {$exists : true}}).exec (err, doc)->
if err
console.error err
process.exit()
if not doc or doc.length < 1
process.exit()
i = 0
promiseArray = []
while i < doc.length
updateFunc = (doc) ->
defer = Q.defer()
User.update({
"_id" : ObjectId(doc[i].juniorId)
"friends.user": ObjectId(doc[i]._id)
},{
$set:
"friends.$.canAdmin" : true
}, (err, updateResult) =>
if err
console.error err
defer.reject()
defer.resolve()
)
return defer.promise
updateFunc.bind(null, doc)
promiseArray.push updateFunc
i++
Q.all(promiseArray).then(->
console.log 'Why did get here before promises all fulfilled?'
).done ( ->
process.exit()
)
我用 Q.promise 解决方案试过了,但它也不起作用。 Promise数组中充满了函数,我查了下
promise 数组填充了函数,但它没有填充 promise,因此它已实现。
改为promiseArray.push(updateFunc(doc))