EDIT: что я имею в виду под огнями несколько раз, это то, что newjob() будет срабатывать 3 раза, каждые 5 секунд ... так что через 20 секунд я буду иметь его 12 раз, а не 4 раза, что я хотел бы. поэтому он срабатывает несколько раз каждые 5 секунд, а не раз каждые 5 секунд.setInterval триггеры функция несколько раз
У меня есть функция, которую я создал с помощью Toastr для отображения сообщения в моем веб-приложении. я в конечном итоге собираюсь связать его с ajax-запросом API, чтобы определить, показывать или нет сообщение, но на данный момент я просто проверяю, как это выглядит.
Я устанавливаю интервал, но он выполняет функцию внутри него несколько раз (обычно 3).
$(document).ready(function() {
setInterval(function() {
newJob();
}, 5000);
});
я не могу сделать setInterval (функция (е) {}, как е не определено, так как нет ни одного события, связанные с ним, по щелчку, я использовал e.stopImmediatePropagation(), чтобы он только стрелять однажды как я могу остановить это немедленное распространение на заданном интервале, если я не е
спасибо
EDIT:.?. полный код:
var newJob = function(e) {
var i = -1;
var $toastlast;
var getMessage = function() {
var msgs = ["There's a new job in the job dispatch queue", "A job pending approval has timed out"];
i++;
if (i === msgs.length) {
i = 0;
}
return msgs[i];
};
var shortCutFunction = "success"; // 'success' or 'error'
toastr.options = {
closeButton: true,
progressBar: true,
debug: false,
positionClass: 'toast-top-full-width',
onclick: null,
timeOut: "0",
extendedTimeOut: "0",
showDuration: "0",
hideDuration: "0",
showEasing: "swing",
hideEasing: "linear",
showMethod: "fadeIn",
hideMethod: "fadeOut",
};
toastr.options.onclick = function() {
window.location.href = "/dispatcher";
};
var msg = getMessage();
$("#toastrOptions").text("Command: toastr["
+ shortCutFunction
+ "](\""
+ msg
+ "\")\n\ntoastr.options = "
+ JSON.stringify(toastr.options, null, 2)
);
var $toast = toastr[shortCutFunction](msg);
};
$(document).ready(function() {
setInterval(function() {
console.log('set interval');
newJob();
}, 5000);
});
и это мой index.phtml файл:
<?php
echo $this->headScript()->appendFile($this->basePath() . '/plugins/toastr/toastr.js')
echo $this->headScript()->appendFile($this->basePath().'/js/dispatchernotification.js');
?>
все, что я делаю это добавление JavaScript, что я хочу, чтобы мой работает index.phtml файл и библиотеки toastr. by console.loging внутри интервала, я получаю три журнала.
вот fiddle..not уверен, как запустить его, хотя, как это на готовом http://jsfiddle.net/efecarranza/rfvbhr1o/
Ваша цель? setInterval предназначен для запуска несколько раз. – Zee
Исходя из вашего кода, 'setInterval' срабатывает каждые 5 секунд. Разве это не то, что вы хотите? Если вы хотите, чтобы он срабатывал только один раз, вместо этого используйте 'setTimeout'. –
Извините, я хотел сказать, что newJob() срабатывает несколько раз, каждые 5 секунд ... так каждые 5 секунд, я получу 3 экземпляра newjob – efecarranza