Nodejs:async.eachSeries过早调用最终回调

时间:2016-01-09 19:34:01

标签: javascript node.js asynchronous coffeescript

我真的缩短了代码以放置主要部分:

我有一个列表,我想对该列表的每个项目进行一些操作。为此,我使用async.eachSeries。事实上,我在循环中有2个异步函数,即async.parallelcreate_media_iso,它是async.parallel的成功回调。

我的问题是,在执行第一项后,将触发最终回调$location.path "/wait_media"。但是我可以看到在后台其他项目正在执行。

有人能指出我的好方向吗?

感谢任何建议。

async.eachSeries myList, ((entry, callback) ->

  media_file              = entry
  extension               = path.extname media_file
  media_media             = path.basename media_file, extension
  media                   = {file: media_file, media: media_media}

  work_path = path.join binaries_iso_path, media.media

  copy_list_functions = get_media_copy_list media, work_path, $scope.copy_complete


  async.parallel copy_list_functions, (err, res) ->

      create_media_iso media_iso, media.media, work_path, boot_image_path, sort_file_path, (progress) ->
          $scope.count = progress

          if $scope.count >= 100.0                
              callback()
  return

), (err) ->
    if err
      console.log 'A file failed to process'
    else
      $location.path "/wait_media"
    return

1 个答案:

答案 0 :(得分:1)

async.parallel copy_list_functions立即返回,无需等待该功能完成。这就是调用外部回调的原因。尝试调用copy_list_functions顺序性。