как остановить работу функции?
привет всем, подскажите пожалуйста
// AUTOLOAD NEW MESSAGE function load_new_msg(dialog_sender_id,dialog_receiver_id,dialog_pid,dialog_offset){ сlearInterval(intervalID) // НЕ работает intervalID = setInterval(function() { $.ajax({ // тут запрос }); }, 5000); } эта функция запускается другой функцией, как мне остановить/уничтожить полностью предыдущую запущеную функцию "load_new_msg"? сори если не в тот раздел.. |
Эм.. я так понял ты должен интервал после функции писать, что бы вышло:
function load_new_msg(){ if(...){ clearInterval(intervalID); } $.ajax({ // тут запрос }); } var intervalID = setInterval(load_new_msg, 5000); |
Цитата:
|
Цитата:
и кстати сама функция вообще не выполняется на 1000 ставил Цитата:
|
Цитата:
|
Цитата:
Цитата:
Нужно остановить таймер при повторном вызове функции, так? Тогда тебе нужно хранить идентификатор таймера в глобальном пространстве, а не внутри функции: function load_new_msg(dialog_sender_id,dialog_receiver_id,dialog_pid,dialog_offset){ if (intervalID) сlearInterval(intervalID) window.intervalID = setInterval(function() { $.ajax({ }); }, 5000); } |
Цитата:
Цитата:
|
Erolast,
вот такой вариант возможен fu1=function(){ id=setInterval(function(){console.log(1)}, 100) setTimeout(fu2, 1000) } fu2=function(){ clearInterval(id) id=setInterval(function(){console.log(2)}, 10000) } setTimeout(function(){clearInterval(id)}, 50000) fu1() 1 1 1 1 1 1 1 1 1 2 2 2 2 |
Цитата:
|
Вот полный скрипт:
// LOAD DIALOG $('a[id^="dialog_load_"]').on('click.namespace1', function(){ var dial_lnk = $(this).attr('id').split("_"); var dialog_sender_id = dial_lnk[2]; var dialog_receiver_id = dial_lnk[3]; var dialog_pid = dial_lnk[4]; var dialog_offset = 3; $('#im_msg_box').empty(); $('#im_msg_box').append('<div id="im_content_wrap" style="">'+ '</div>'+ '<div id="im_control_wrap" style="">'+ '<div class="im_label"><img src="/content/avatars/noavatar.png"></div>'+ '<div class="im_text">'+ '<textarea id="msg_text" name="im_msg_new" placeholder="текст сообщения"></textarea>'+ '</div>'+ '<div class="im_send_btn">'+ '<button type="submit" class="gl_btn post_submit">отправить</button>'+ '</div>'+ '</div>'); $.ajax({ type: 'post', url: '/library/im/im_handler.php', data: 'query_type=dialog_load&dialog_sender_id='+dialog_sender_id+ '&dialog_receiver_id='+dialog_receiver_id+'&dialog_pid='+dialog_pid, success: function(data){ data = JSON.parse(data); $('#im_content_wrap').empty(); $('#im_content_wrap').append('<div id="im_content" style="">'+data.dataArray+'</div>'); animateToNewMsg(); // тут вызывается загрузка новых сообщений load_new_msg(dialog_sender_id,dialog_receiver_id,dialog_pid,dialog_offset); } }); }); // AUTOLOAD NEW MESSAGE function load_new_msg(dialog_sender_id,dialog_receiver_id,dialog_pid,dialog_offset){ if (intervalID) сlearInterval(intervalID) window.intervalID = setInterval(function() { $.ajax({ type: "post", url: '/library/im/im_handler.php', data: 'query_type=message_autoload&dialog_sender_id='+dialog_sender_id+ '&dialog_receiver_id='+dialog_receiver_id+'&dialog_pid='+dialog_pid+'&dialog_offset='+dialog_offset, success: function(data){ data = JSON.parse(data); //alert(data.dataArray); $('#im_content').append('<div style="">'+data.dataArray+'</div>'); animateToNewMsg(); } }); animateToNewMsg(); }, 5000); } |
Часовой пояс GMT +3, время: 05:10. |