2016-08-03 4 views
0

Так что в моем JS скрипт я использую JQuery, в верхней части я писал:

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

"1" печатается только один раз, что означает myFunc только побежал один раз, я хочу он запускает каждый кадр/миллисекунду или в основном так же быстро, как и может снова и снова. Почему это не так? Если я делаю это неправильно, как я могу добиться эффекта, который я хочу, и что моя ошибка?

+0

Каков ваш прецедент для этого? то есть какую проблему вы хотите решить? – Eric

+1

вы можете сделать в то время как (1) {myFunc();} но сначала объясните свое требование –

+0

Узнать jQuery: https://www.lynda.com/jQuery-training-tutorials/246-0.html – Tuhin

ответ

1

@Vadim Татарников позвонить, как только быстрее функции в использовании JQuery Window.setInterval() с минимальным промежуток времени попробовать следующий код

<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"); 
} 

Это вызовет myFunc() за каждые 1 миллисекунду только что запустится и увидит консоль.

-1

Если вы хотите, чтобы функция запускалась каждый раз, когда вы должны размещать свою функцию в setInterval с интервалом 1ms хотя это не рекомендуется для этого.

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

Не могли бы вы объяснить, пожалуйста, ваш вариант использования, или вы также можете попытаться обернуть свой вызов функции внутри цикла.

0

Вы можете сделать:

while(1){ 
    myFunc(); 
} 

Но объяснить ваше требование первого.

1

вы можете использовать setTimeout() для выполнения той же функции после некоторого интервала предположим 5 секунд

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

вы можете использовать setInterval(), а также.

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

Вы написали IIFE (сразу вызываемые функциональные выражения), а основная функция запускается только один раз. Вам нужно вызвать свою внутреннюю функцию, используя setInterval с промежутком в 0 миллисекунд.

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

Не может ли это привести к сбою и т. Д.? –

+0

Я считаю, что это не приведет к краху вашего приложения. в театре нет задержки, но браузер полностью контролирует функции обратного вызова, и он знает, когда звонить. Интервал настройки, равный 0, гарантирует, что наша функция обратного вызова будет выполняться максимальное количество раз. попытайтесь выполнить минимальные вычисления с помощью обратного вызова и как можно скорее вернуть управление. –

1

Ваша анонимная функция (внешняя) запускается при загрузке страницы. Это вызывает вызов myFunc, который выводит 1 на консоль и затем заканчивается. Если вы хотите выполнить цикл, вы можете попробовать позвонить myFunc в конце функции myFunc, но если вы это сделаете, вы обнаружите, что ваш браузер зависает и что в конечном итоге у вас закончится нехватка памяти. Это связано с тем, что стек вызовов будет расти и расти, не позволяя пользовательскому интерфейсу отвечать, поскольку javascript полностью контролируется!

В качестве альтернативы вы можете использовать setTimeout(myFunc, delay) в конце вашего метода, который будет вызывать его снова после прохождения определенного количества миллисекунд. Это не будет заполнять стек вызовов и позволит пользовательскому интерфейсу отвечать, но вам нужно будет указать интервал.

Последний способ - использовать 'setInterval (myFunc, delay)' вместо вашего внешнего вызова на 'myFunc()'. Это будет многократно вызывать вашу функцию каждые «задержка» миллисекунды навсегда.

1

Из комментариев видно, что вам крайне необходимо иметь адаптивную структуру.

Bootstrap - это самая популярная инфраструктура HTML, CSS и JS для разработки мобильных мобильных проектов в Интернете.

Это устраняет необходимость в создании/разработке отдельных страниц для мобильных и настольных компьютеров.

Пройдите через предопределенный набор классов CSS, и вы настроены.

Нет необходимости писать сложную логику для изменения размеров окна и все, что ..

Надеется, что это помогает.

0

Ваш код работает только один раз (при загрузке страницы). Если вы хотите запускать код так быстро, как может обрабатывать ваш компьютер, используйте

while(true) {/Your Code here.../}
или
var interval = setInterval(1, function() {/Your Code Here/});
, запустив код каждые 0,001 секунды и
clearInterval(interval);
, чтобы остановить запуск кода. См. this link для более подробной информации.

1

Если вам просто нужно проверить для изменения размера окна на комментарий, попробуйте

$(function() { 
    $(window).resize(function() { 
     //insert code here 
    }); 
}); 
Смежные вопросы