This should be the translation:
for d in *
test -d $d
or continue
begin
cd $d
time-consuming-task-1
time-consuming-task-2
end &
end
However it errors; seems you can't do `end &`. Probably a bug; I'll report it. When fixed, I imagine we could actually do it even better with fish: for d in *
if test -d $d
cd $d
time-consuming-task-1
time-consuming-task-2
end &
end