Posted to tcl by apn at Thu Feb 10 05:35:40 GMT 2022view pretty
# Original code, simplified without zip and email package require promise namespace path promise set urls [list http://www.example.com http://www.tcl-lang.org] proc print_done args {puts "All done!"} proc save_file args {} set promises [lmap url $urls { [pgeturl $url] then [lambda {dir url http_state} { save_file $dir $url [dict get $http_state body] } /tmp $url] }] set gate [all $promises] $gate done print_done # Above example with additional requirement to run du in parallel package require promise namespace path promise set urls [list http://www.example.com http://www.tcl-lang.org] proc print_done args {puts "All done!"} proc save_file args {} set promises [lmap url $urls { [pgeturl $url] then [lambda {dir url http_state} { save_file $dir $url [dict get $http_state body] } /tmp $url] }] lappend promises [pexec du -sk /tmp]; # Single line added set gate [all $promises] $gate done print_done