Доброго времени суток.
Я новичок в JavaScript и в фронтенде в целом, но пришлось написать расширение для Google Chrome. И вроде бы ничего что-то загуглил что-то сам додумал и написал... И работает вроде расширение, но ресурсы памяти жрет неимоверно. Расширение состоит из одного background.js + jquery. Думаю что проблема в функции setInterval(), которая держит ссылки и сборщик мусора не может их освободить.
Вот что делает расширение:
-Периодически опрашивает сервер (дёргает php файл).
-Если получили данные с сервера выводит сообщение пользователю.
Вот текст файла background.js
background.jschrome.notifications.onButtonClicked.addListener(notificationBtnClick);
var options = {
type: "basic",
title: "Basic message",
message: "Primary message to display",
priority: 2,
buttons: [{ title: "Find uid"}],
};
function doNotify(serverData){
var objs = JSON.parse(serverData);
var lengthOfCalls = Object.keys(objs).length;
for (i = 0; i < lengthOfCalls; i++){
var uid = objs[i]["uid"];
options.message = "Поступление от " + objs[i]["name"];
chrome.notifications.create(uid, options);
}
}
function notificationBtnClick(notID, iBtn) {
console.log(iBtn);
if (iBtn == "0")
{
var win = window.open("https://www.google.ru/#q=" + notID, '_blank');
win.focus();
}
}
setInterval(function() {
$.ajax("http://192.168.0.1/get_data.php").done(function(data){
if (data != "false") {
doNotify(data);
}
});
}, 3000);
Буду признателен за советы/исправления/конструктивную критику.
Спасибо.