Sostituire setInterval con for e while per un loop infinito

di il
6 risposte

Sostituire setInterval con for e while per un loop infinito

Salve a tutti ho una pagina che genera dei codici colori esadecimali in modo casuali (random) e quello che sto cercando di fare è sostituire "setInterval" con "for" e "while" in modo che i codici colori esadecimali casuali (random) vengano generati all'infinito in loop. Il codice JavaScript è questo:
buttonClick = function(color) {
	newColor(color, "button-click");
};

newColor = function(color) {
	color = new tinycolor(color);
	if(color.isValid()) {
		
		currentColorHex = "#" + (colorHex = color.toHex());
		
		$("body").css("background", color.toHexString());
		$("#hexcode").css("color", tinycolor.mostReadable(color, ["#fff", "#000"]).toHexString());
		$("#hexcode").html(currentColorHex);
	}
}
setInterval(function () {
  buttonClick(tinycolor.random());
}, 4);
Non saprei come sostituire "setInterval" con "for" e "while" per ottenere un loop infinito per generare i codici colori esadecimali casuali (random).

6 Risposte

  • Re: Sostituire setInterval con for e while per un loop infinito

    fede220 ha scritto:


    quello che sto cercando di fare è sostituire "setInterval" con "for" e "while" in modo che i codici colori esadecimali casuali (random) vengano generati all'infinito in loop
    Sei consapevole che in questo modo bloccherai l'esecuzione della pagina, ovvero ti apparirà come bloccata, giusto?
  • Re: Sostituire setInterval con for e while per un loop infinito

    Si sono consapevole che si blocca l'esecuzione della pagina e quello che mi chiedo se esiste un modo per utililizzare "for" e "while" per un loop infinito senza che si blocchi l'esecuzione della pagina. Grazie.
  • Re: Sostituire setInterval con for e while per un loop infinito

    fede220 ha scritto:


    Si sono consapevole che si blocca l'esecuzione della pagina e quello che mi chiedo se esiste un modo per utililizzare "for" e "while" per un loop infinito senza che si blocchi l'esecuzione della pagina.
    Probabilmente l'unica soluzione minima viabile è quella di realizzare un Service Worker, ma continua a non avere senso: un loop viene usato se deve produrre un risultato finale al termine di una condizione; rendendolo infinito, significa che esso deve produrre valori di continuo, e a quel punto non ha senso che questa "continuità" sia data da un ciclo, la cui velocità di esecuzione rende inutilizzabile qualsiasi valore prodotto durante l'elaborazione e perciò tanto vale un timeout.

    In breve, stai chiedendo qual è l'espediente tecnico che ti consenta di farne un uso probabilmente inappropriato per raggiungere uno scopo che andrebbe ottenuto diversamente. Io farei un passo indietro e ripenserei alla soluzione.

    P.S.: non è neanche bello condurre contemporaneamente la stessa discussione in due posti, visto che hai ricevuto i medesimi suggerimenti anche su questo forum aprendo la discussione praticamente nello stesso momento, e il crossposting è vietato da regolamento.
  • Re: Sostituire setInterval con for e while per un loop infinito

    Grazie per i consigli, utilizzerò setInterval. Chiedo scusa se ho aperto la discussione nell'altro forum ma era per vedere cosa che mi consigliavano anche li. Scusa di nuovo se questo è cross-posting, non era mia intenzione, era solo per avere più consigli anche sull'altro forum .
  • Re: Sostituire setInterval con for e while per un loop infinito

    fede220 ha scritto:


    Grazie per i consigli, utilizzerò setInterval. Chiedo scusa se ho aperto la discussione nell'altro forum ma era per vedere cosa che mi consigliavano anche li. Scusa di nuovo se questo è cross-posting, non era mia intenzione, era solo per avere più consigli anche sull'altro forum .
    Cercare alternative ci sta, ma magari prima vedi cosa riesci a raccogliere da una parte (a scelta) e poi ovviamente se non ricevi risposte, puoi attingere da altre fonti.

    Non è una pratica vista di buon occhio perché molti frequentano più luoghi e in questo modo costringi a scegliere dove rispondere, oltre al fatto che spesso una delle due discussioni finisce per non essere aggiornata quando l'utente ha risolto il problema.

    Ciao!
  • Re: Sostituire setInterval con for e while per un loop infinito

    fede220 ha scritto:


    Si sono consapevole che si blocca l'esecuzione della pagina e quello che mi chiedo se esiste un modo per utililizzare "for" e "while" per un loop infinito senza che si blocchi l'esecuzione della pagina. Grazie.
    Si, semplicemente usando "await new Promise(setTimeout)", dato che la funziona è "async". Ma "service worker" è più corretto
Devi accedere o registrarti per scrivere nel forum
6 risposte