Come chiamare un metodo che si chiama in modo asincrono?

3

Nel codice relativo all'interfaccia utente, spesso finisco per scrivere un costrutto come questo:

function doItOnceAndRepeat() {
    if (!stillNeededToDoIt()) {
        return;
    }
    doIt();
    runLater(doItOnceAndRepeat, 1000);
}

runLater è una funzione che eseguirà la funzione specificata in modo asincrono, dopo un po 'di tempo. Potrebbe essere setTimeout in Javascript o postDelayed in Android.

C'è un nome per questo? Può sembrare una ricorsione, ma non ci saranno più invocazioni nello stack.

Inoltre, quale potrebbe essere un nome migliore per doItOnceAndRepeat che spieghi meglio questo meccanismo?

    
posta ris8_allo_zen0 11.11.2016 - 10:06
fonte

2 risposte

3

I miei due centesimi: potresti chiamare la funzione con un nome che descrive cosa invece di come lo fa.

Funziona meglio come codice di auto-documentazione e tu disaccoppia il nome della funzione (e il nome che gli utenti di quella funzione devono ricordare) dall'implementazione.

In alternativa, se la tua funzione sbalordisce il foo, puoi chiamarlo sbazzleFoo e passarlo a un'altra funzione chiamata runAndSchedule che prende sbazzleFoo , la esegue e pianifica la sua esecuzione ritardata se necessario.

    
risposta data 17.11.2016 - 19:11
fonte
3

Ricorsione in modo asincrono.

Non può essere molto più chiaro di quello. Questo chiaramente documenta che è ricorsivo in modo asincrono. Cerca di non pensare troppo alla questione:)

    
risposta data 17.11.2016 - 22:41
fonte

Leggi altre domande sui tag