Posted to tcl by apn at Thu Feb 10 05:35:40 GMT 2022view raw

  1. # Original code, simplified without zip and email
  2. package require promise
  3. namespace path promise
  4. set urls [list http://www.example.com http://www.tcl-lang.org]
  5. proc print_done args {puts "All done!"}
  6. proc save_file args {}
  7. set promises [lmap url $urls {
  8. [pgeturl $url] then [lambda {dir url http_state} {
  9. save_file $dir $url [dict get $http_state body]
  10. } /tmp $url]
  11. }]
  12. set gate [all $promises]
  13. $gate done print_done
  14. # Above example with additional requirement to run du in parallel
  15. package require promise
  16. namespace path promise
  17. set urls [list http://www.example.com http://www.tcl-lang.org]
  18. proc print_done args {puts "All done!"}
  19. proc save_file args {}
  20. set promises [lmap url $urls {
  21. [pgeturl $url] then [lambda {dir url http_state} {
  22. save_file $dir $url [dict get $http_state body]
  23. } /tmp $url]
  24. }]
  25. lappend promises [pexec du -sk /tmp]; # Single line added
  26. set gate [all $promises]
  27. $gate done print_done

AltStyle によって変換されたページ (->オリジナル) /