2016-08-03 5 views
0

Also in meinem js Skript ich jQuery verwenden, oben schrieb ich:

$(function() { 
    myFunc(); 
    function myFunc() { 
     console.log("1"); 
    } 
}); 

"1" nur einmal dem gedruckt wird, bedeutet myFunc nur einmal lief, ich will es läuft jeden Frame/Millisekunde oder im Grunde so schnell es geht über und wieder und wieder. Warum passiert es nicht so? Wenn ich es falsch mache, wie kann ich den Effekt erzielen, den ich will und was ist mein Fehler?

+0

Was ist Ihr Anwendungsfall dafür? Welches Problem möchten Sie lösen? – Eric

+1

können Sie durch while (1) {myFunc();} tun, aber erklären Sie Ihre Anforderung zuerst –

+0

Lernen Sie jQuery: https://www.lynda.com/jQuery-training-tutorials/246-0.html – Tuhin

Antwort

1

@Vadim Tatarnikov sobald schneller eine Funktion in jQuery window.setInterval() mit einem Minimum an rufen Zeitintervall versuchen, den Code unten

<script type="text/javascript" src="jquery.js"></script>//add your jquery script file 

<script type="text/javascript"> 
$(document).ready(function(){ 
window.setInterval(function(){ 
myFunc(); 
},1);//here i put time interval=1 millisecond 
}); 
function myFunc(){ 
    console.log("1"); 
} 

Dadurch wird myFunc() alle 1 Millisekunde aufgerufen und die Konsole angezeigt.

-1

Wenn Sie möchten, dass eine Funktion jedes Mal ausgeführt wird, sollten Sie Ihre Funktion in setInterval mit Intervall von 1ms platzieren obwohl es kein empfohlener Weg ist.

könnten Sie bitte Ihren Anwendungsfall für das gleiche erklären, oder Sie könnten auch versuchen, Ihren Funktionsaufruf innerhalb einer Schleife zu wickeln.

0

Sie können tun: zuerst

while(1){ 
    myFunc(); 
} 

Aber Ihre Anforderung erklären.

1

können Sie setTimeout() verwenden für ausführen gleiche Funktion nach einem Intervall annehmen 5 Sekunden

$(function() { 
    myFunc(); // call initially when dom is ready 
    function myFunc() { 
     console.log("1"); 
     setTimeout(function(){ myFunc(); }, 5000) // runs after every 5 seconds 
    } 
}); 

Sie setInterval() auch nutzen können.

$(function() { 
    function myFunc() { 
     console.log("1"); 
    } 
    setInterval(myFunc,0); 
}); 
1

Sie haben IIFE (sofort aufgerufene Funktionsausdrücke) geschrieben und die Hauptfunktion wird nur einmal ausgeführt. Sie müssen Ihre innere Funktion mit setInterval mit 0 Millisekunden Lücke aufrufen.

$(function(){ 
    function myFunc(){ 
     console.log("1"); 
    } 
    setInterval(myFunc,0); 
}); 
+0

Wird das keinen Absturz usw. verursachen? –

+0

Ich glaube, es wird Ihre App nicht zum Absturz bringen. Theatralisch gibt es keine Verzögerung, aber der Browser hat die volle Kontrolle über die Callback-Funktionen und weiß, wann er anrufen soll. Wenn Sie das Intervall auf 0 setzen, wird sichergestellt, dass unsere Rückruffunktion maximal ausgeführt wird. versuchen Sie, im Callback minimale Berechnungen durchzuführen und das Control so schnell wie möglich zurückzugeben. –

1

Ihre anonyme Funktion (die äußere) wird ausgeführt, wenn die Seite geladen wird. Dies ruft myFunc auf, der 1 an die Konsole ausgibt und dann endet. Wenn Sie eine Schleife erstellen wollten, könnten Sie versuchen, myFunc am Ende der myFunc-Funktion aufzurufen, aber wenn Sie dies tun würden, würden Sie feststellen, dass Ihr Browser hängen bleibt und Sie schließlich nicht mehr genügend Arbeitsspeicher haben. Dies liegt daran, dass der Aufruf-Stack wachsen und wachsen würde und die Benutzeroberfläche niemals reagieren würde, da JavaScript vollständig kontrolliert wird!

Alternativ können Sie setTimeout(myFunc, delay) am Ende Ihrer Methode verwenden, die es nach Ablauf einer bestimmten Anzahl von Millisekunden erneut aufrufen wird. Dadurch wird der Aufruf-Stack nicht gefüllt und die Benutzeroberfläche kann antworten, aber Sie müssen das Intervall angeben.

Ein letzter Weg ist die Verwendung von 'setInterval (myFunc, delay)' an der Stelle, an der Ihr äußerer Körper auf 'myFunc()' aufruft. Dies wird Ihre Funktion wiederholt jede 'Verzögerung' Millisekunden für immer aufrufen.

1

Aus den Kommentaren scheint klar zu sein, dass Sie dringend einen Responsive Framework benötigen.

Bootstrap ist das beliebteste HTML-, CSS- und JS-Framework für die Entwicklung reaktionsfähiger, mobiler erster Projekte im Internet.

Sie müssen keine separaten Seiten für Mobilgeräte und Desktops mehr erstellen/entwickeln.

Gehen Sie einfach durch die vordefinierte Gruppe von CSS-Klassen und Sie sind eingestellt.

Keine Notwendigkeit, komplexe Logik für Fenstergröße und das alles zu schreiben ..

Hoffe, es hilft.

0

Ihr Code wird nur einmal ausgeführt (wenn die Seite geladen wird). Wenn Sie den Code so schnell ausführen möchten, wie Ihr Computer verarbeiten kann, verwenden Sie

while(true) {/Your Code here.../}
oder
var interval = setInterval(1, function() {/Your Code Here/});
, um den Code alle 0,001 Sekunden und
clearInterval(interval);
auszuführen, damit der Code nicht ausgeführt wird. Weitere Informationen finden Sie unter this link.

1

Wenn Sie nur zum Ändern Fenstergröße pro Ihren Kommentar überprüfen müssen, versuchen

$(function() { 
    $(window).resize(function() { 
     //insert code here 
    }); 
});