【问题标题】:Nodejs : async.eachSeries calling final callback too earlyNodejs:async.eachSeries 过早调用最终回调
【发布时间】:2016-04-14 08:56:02
【问题描述】:

我确实缩短了代码以放置主要部分:

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

我的问题是第一个item执行完后,触发了最后的回调$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

【问题讨论】:

    标签: javascript node.js asynchronous coffeescript


    【解决方案1】:

    async.parallel copy_list_functions 立即返回,无需等待函数完成。这就是调用外部回调的原因。尝试调用copy_list_functionssequenceity。

    【讨论】:

    • 有什么建议让它连续吗?听说过 async.series 吗?
    • 如果您删除 async.parallel 并使用参数调用 copy_list_functions 会发生什么?
    • 什么都不会发生,因为async.parallel 第一个参数是一个会运行的函数列表,如果我不调用它,里面的函数就不会运行
    猜你喜欢
    • 2014-03-10
    • 1970-01-01
    • 2011-03-22
    • 2012-10-31
    • 2015-12-04
    • 2013-05-28
    • 1970-01-01
    • 2011-11-25
    • 2010-10-26
    相关资源
    最近更新 更多