Come si dice a un programma Ruby di aspettare un intervallo di tempo arbitrario prima di passare alla riga di codice successiva?Informare il programma Ruby per attendere un po 'di tempo
risposta
E 'abbastanza facile:
sleep(num_secs)
Il valore '' num_secs può essere un numero intero o float. Inoltre, se si sta scrivendo questo all'interno di un'applicazione Rails, o hanno incluso la libreria ActiveSupport altrove nel progetto, è possibile costruire intervalli più lunghi utilizzando la seguente sintassi convenienza:
sleep(4.minutes)
# or, even longer...
sleep(2.hours); sleep(3.days) # etc., etc.
#Or shorter
sleep(0.5) #Half a second
Usa sleep in questo modo:
sleep 2
Che sarà sonno per 2 secondi.
Attenzione a dare una discussione. Se esegui semplicemente sleep
, il processo verrà interrotto per sempre. (Questo è utile quando si desidera un filo a dormire fino a quando è svegliato.)
sleep 6
dormirà per 6 secondi. Per una durata maggiore, puoi anche utilizzare sleep(6.minutes)
o sleep(6.hours)
.
Non sono sicuro dei downvotes su questo, ma potrebbe essere che 'minutes()' e 'hours()' sono metodi su numeri aggiunti da Ruby on Rails - quindi non standard disponibili in Ruby - nella classe ActiveSupport :: Duration. Sono abbastanza convenienti però. –
Aspetta, dormirà per sempre, o finché non sarà "svegliato"? Cosa significa "svegliato"? – anthropomorphic
@anthropomorphic Si riferisce a quando un altro thread chiama Thread # eseguito. –
In realtà, quando un altro thread chiama Thread # wakeup, suppongo. – chesterbr