如何链接多个任务与JavaScript?

我有一些asynchronous任务要做,比如task1,task2,task3,…,它们的关系如下图所示。

在这里输入图像描述

这是一个有向无环图,所以我可以使用拓扑sorting来找出一个可能的执行路线。

但对于人类来说,这仍然是一个不小的任务,也许就是这样。

task7.start().done(check_if_5_is_done_then_start_11, check_if_3_is_done_then_start_8); task5.start().done(check_if_7_is_done_then_start_11); task3.start().done(check_if_7_is_doen_then_start_8, check_if_11_is_doen_then_start_10); .... 

我更喜欢更优雅的解决scheme,如:

 var Tasks = new Tasks({ task7: [func7, []], task11: [func11, ["task7", "task5"]], task5: [func5, []], task8: [func8, ["task3"]] ... }); Tasks.start().alldone(function () { // done }); 

看起来就像是async.auto的用例。