JavaScript で Promise はそこそこ扱えるようになったけど、 retry をどうするか曖昧なままだったのでちょっと整理する。 まずダメなやつ普通に同期的なコードの場合、やり方はいろいろあると思うけど、素朴にはこんな感じに書けると思う。 function s() { return Math.random() > 0.5 } let retry = 3 let result while ( retry > 0 ) { result = s() if ( result ) { break } else { retry-- } } console.log(result) 実際には retry 付きで呼ぶ function に閉じると思うけど、だいたいこんな感じかなーと思う。 で、Promise でもこれを元になんとかしてみようとすると、うまくいかない。s() を Promise を