Ora abbiamo messo insieme il nostro semplice gioco femminile di mezza età.
Se un utente fa clic sul pulsante più di cinque volte, consideriamo che ne abbia uno.
Altrimenti hanno perso.
Quindi il gioco funziona sicuramente così com'è adesso.
Ma ho iniziato a fare quel caso alla fine dell'ultima sezione che forse il modo in cui abbiamo
scritto questo gioco non era il migliore del mondo.
Ho buttato fuori il caso in cui avremmo potuto lasciare che altri sviluppatori gestissero questo gioco.
Proprio come se potessimo voler pubblicare questa cosa come una funzione o come un pacchetto autonomo.
Quindi un altro sviluppatore potrebbe eseguire il gioco e quindi avremmo bisogno di consentire loro di specificare cosa
fare ogni volta che l'utente ha completato con successo o fallito il gioco.
Quindi, pensando a questo in una sorta di punto di vista del diagramma, questo è quello che sto suggerendo.
Sto dicendo che voglio avere la stessa identica esperienza di gioco ma voglio racchiudere tutta quella logica di
gioco in una singola funzione che è rappresentata da questo tipo di sfondo blu o ciano.
Quindi voglio consentire a un altro sviluppatore di iniziare il gioco e specificare esattamente cosa dovrebbe
accadere se l'utente riesce nel gioco o fallisce nel gioco.
Quindi, in altre parole, voglio rifattorizzare il nostro attuale codice base tutto ciò che rappresenta questo gioco in una
singola funzione che può essere chiamata dove un altro sviluppatore può specificare cosa fare dopo che il gioco è
stato giocato.
Quindi facciamo questo refactoring.
E poi, mentre andiamo, presenteremo il tema delle promesse e scopriremo come funzionano.
Quindi mi rilasso sul mio codice e, per iniziare, faremo un piccolo refactoring
per mettere tutto il nostro gioco in una funzione autonoma.
Quindi in cima al tag script vado a dichiarare una funzione chiamata start's game.
Ho intenzione di posizionare una parentesi graffa di apertura.
Ho intenzione di prendere tutta la mia logica di gioco.
Ho intenzione di indentare una volta e ho intenzione di chiudere quella parentesi graffa.
Qui sotto in fondo ora è tutto il mio gioco finito dentro questo inizio.
Funzione di gioco
Quindi, ora sono riuscito a mettere tutta la mia logica di gioco in una funzione autonoma, ma quella funzione autonoma
continua a incapsulare cosa fare nel caso di successo e fallimento solo per assicurarsi che tutto
funzioni ancora correttamente.
Ho intenzione di aggiungere una chiamata per avviare il gioco sotto la dichiarazione della funzione.
Quindi qui chiamerò start game in questo modo.
E ora tornando all'interno di Chrome, aggiorneremo il documento e ci assicureremo che tutto funzioni ancora.
Quindi eccoci tutti a rinfrescare, aspettiamo i due secondi e OK tutto per il gioco
funziona ancora come mi aspetterei.
Quindi il nostro codice così com'è ora lo sai che funziona ancora, ma non forniamo un'interfaccia gradevole a
nessun altro sviluppatore che voglia chiamare il gioco d'inizio.
Questo è l'intero obiettivo qui.
Voglio in qualche modo specificare cosa fare quando l'utente vince.
Ogni volta che chiamo start game per farlo, introdurremo l'idea delle promesse ora promette.
Ho spiegato agli sviluppatori molte volte e attraverso ogni singola volta che ho spiegato esattamente come si comportano
i processi.
Ho scoperto esattamente una cosa che ti dice come funzionano, non impartisce nozioni sulle
promesse.
In altre parole, posso sedermi qui e tenere conferenze tutto il giorno su ciò che promette ma non traduce.
Hai davvero visto queste cose in azione.
Quindi ecco cosa faremo.
Invece di farmi sedere qui e lanciare promesse ininterrotte, ci limiteremo a ridefinire il nostro codice per fare
uso di una promessa e poi, una volta che lo avremo fatto, faremo alcune osservazioni
su come esattamente lavori.
OK.
Quindi faremo prima il reattore.
Sarà un po 'misterioso ma poi parleremo esattamente di come funziona.
Quindi, per rifattorizzare il nostro codice per usare le promesse che sto per iniziare eliminando l'intera dichiarazione di timeout interno e l'unica
ragione per cui lo sto eliminando è perché voglio scrivere questa cosa
da zero per essere sicuro che sia davvero chiaro tu esattamente cosa sta succedendo.
Quindi, nei luoghi che stabiliscono il tempo, scriverò di nuovo una nuova promessa e noterò che sto usando una P
maiuscola qui.
Passo poi a passare questa funzione di promessa o questa cosa promessa qualunque sia proprio qui una funzione di
freccia grossa.
OK.
Quindi ho appena passato un grasso o una funzione del genere.
Ogni volta che dichiaro una nuova promessa, questa funzione interiore che io passo ad essa viene chiamata
con due argomenti risolti e rifiutati.
Ora dentro se hai intenzione di inserire la stessa identica o quasi la stessa logica che avevamo
prima con il tempo impostato, dirò set.
Tempo scaduto.
Ho intenzione di passare a una funzione come secondo argomento.
Dirò 2000 millisecondi.
Quindi, all'interno del tempo impostato, possiamo dire se il contatore è maggiore di 5 e qui è dove
le cose si fanno interessanti invece di dire qualcosa sugli allarmi o qualcosa del genere vado a guardare questo
argomento.
Questo argomento di risoluzione lo chiamerò di nuovo.
So che sto tirando fuori una tonnellata di codice che sembra tutto così misterioso, ma che ho pazienza con me.
Finiremo l'implementazione qui e poi parleremo esattamente di ciò che sta accadendo ora sulle istruzioni L,
come nel caso in cui un utente fallisce.
Volevo aggiungere una chiamata per rifiutare Ora un ultimo pezzettino.
Un ultimo po 'quaggiù in basso, dove chiamo di nuovo start game o muovere il punto
e virgola alla fine e invece lo sostituirò con un nuovo punto di linea.
Poi passerò poi una funzione all'interno della quale ti avviserò quando e poi un'ultima cosa.
Una cosa in meno lì con me.
Molto in basso
Dopodiché, aggiungerò una presa e avviserò che hai perso.
OK, così tante modifiche abbiamo apportato molte modifiche e molte probabilità sono un po 'strane.
Totalmente bene.
Totalmente quello che mi aspetto.
Facciamo prima eseguire questo all'interno del nostro browser e verificare che tutto funzioni e parleremo esattamente di ciò
che sta accadendo qui.
Quindi faremo in modo che prima io salvi il documento in modo che tutto sia salvato.
Tornando indietro su Chrome o aggiorna il documento o fai clic sul pulsante.
Beh, immagino di non averlo cucinato abbastanza perché ti ho visto l'ultima volta.
Prendiamo un caso vincente qui.
Clicca clic e vinci.
Ricorda che per riavviare il gioco è necessario aggiornare l'aggiornamento del browser.
Fare clic clic e vinco.
OK.
Quindi chiaramente qualcosa sta funzionando qui a destra.
Chiaramente, qualcosa funziona ancora, ma che diamine è questa cosa promessa.
Che cosa è questo risolto e respingere ciò che è questo furgone e non prendere in fondo.
Facciamo una breve pausa.
Torneremo a parlare di come funzionano esattamente le promesse e poi avremo finito con l'aggiornamento sulle
promesse.
Solo una sezione in più verrà completamente rinnovata con il nostro aggiornamento.
OK.
Ci vediamo tra un secondo.