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))