我真的缩短了代码以放置主要部分:
我有一个列表,我想对该列表的每个项目进行一些操作。为此,我使用async.eachSeries。事实上,我在循环中有2个异步函数,即async.parallel
和create_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
答案 0 :(得分:1)
async.parallel copy_list_functions
立即返回,无需等待该功能完成。这就是调用外部回调的原因。尝试调用copy_list_functions
顺序性。