Existem maneiras idiomáticas de expressar "se (c1 || c2)" no JavaScript quando uma das condições é uma promessa e a outra não?
Quando eu apenas executo as próximas etapas no meu algoritmo se várias condições forem atendidas, eu o expresso da seguinte maneira:
if (sc1 || sc2) {
do();
various();
things();
}
Quando apenas realizo os próximos passos com base no cumprimento de uma promessa, posso expressá-lo assim:
asyncCheck().then(ac1 => {
if (ac1) {
do();
various();
things();
}
}
Como posso expressar em JavaScript idiomático quando a condiçãosc1
é apenas uma expressão síncrona antiga regular, mas condiçãoac2
vem assincronamente através de uma promessa?
Suponha promessas nativas do ES6 e código não trivial que será executado se as condições forem atendidas.
Por exemplo, esse caminho "óbvio" parece feio:
if (sc1) {
do();
various();
things();
} else {
asyncCheck().then(ac2 => {
if (ac2) {
do();
various();
things();
}
}
}
Eu poderia colocar o código repetido em uma função chamada de qualquer maneira, o que é menos feio, mas eu sinto que poderia estar perdendo algo mais idiomático que outros programadores de JavaScript podem estar usando.
Devo acrescentar também esta observação: Como no meu caso, existe um circuito lógico ou, deve haver um curto-circuito, para que não se incomode com a verificação lenta adiada se a verificação simples já estiverfalse
.