我要执行一些异步任务,例如task1,task2,task3,...,它们之间的关系如下图所示。
这是一个有向无环图,因此我可以使用拓扑排序来找出一种可能的执行路径。
但这也许对人类来说仍然是不平凡的任务。
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);
....
我希望有一个更优雅的解决方案,例如:
var Tasks = new Tasks({
task7: [func7, []],
task11: [func11, ["task7", "task5"]],
task5: [func5, []],
task8: [func8, ["task3"]]
...
});
Tasks.start().alldone(function () { // done });
最佳答案
看起来非常像用例async.auto设计的用例。