function Timer(t, ch) {
this.time = t;
this.channel = ch;
this.interval = setInterval(() => {
if (--this.time < 1) {
clearInterval(this.interval);
// здесь можно делать ченить с сокетом, он же полюбому глобальный
// либо сделать свои ивенты через эммитер
socket.to(this.channel).emit('TIMEOUT - STATUS ZERO');
};
}, 1000);
this.getTimeleft = () => this.time;
socket.to(this.channel).emit(`TIMER STARTS, YOU HAVE - ${this.time} SECONDS TO DO SOMETHING`);
};
var timer = new Timer(10, 'chanel2');
var timer2 = new Timer(3, 'chanel5');
let messagesToDelete = [];
telegramBot.sendMessage('some').then((m) => {
messagesToDelete.push({
messageId: m.message_id,
chatId: m.chat.id
});
}).catch(console.error);
function wipeHistory() {
messagesToDelete.forEach(m => {
telegramBot.deleteMessage(m.chatId, m.messageId).then((success) => {
if (success) {
messagesToDelete = messagesToDelete.filter((v) => (v.messageId !== m.message_id && v.chatId !== m.chat.id));
};
}).catch(console.error);
});
};
setInterval(wipeHistory, 60 * 10 * 1000);
let someVar; // let someVar = undefined;
setTimeout(() => {
setValue('SOME VALUE');
}, 0);
console.log('Work, please! ' + someVar); // 'Work, please! undefined'
function setValue(value) {
someVar = value;
console.log('Variable Value: ' + someVar); // Variable Value: SOME VALUE
};
console.log('Work, please! ' + someVar); // 'Work, please! undefined'
var http = require('http');
var maxSimRequests = 10; // сколько запросов активно одновременно
var urls = []; // массив ссылок которые надо проверить
var urlsInWork = urls.splice(0, maxSimRequests);
if (urlsInWork.length === 0 || maxSimRequests < 1) return;
urlsInWork.forEach(requestFn);
var voidInterval = setInterval(() => {
// впринципе можно и без интервала обойтись, не помню зачем его делал
}, 10);
function requestFn(url) {
http.get(url, (response) => {
let { statusCode } = response;
if (statusCode === 200) {
// что то делаем с response
} else if (statusCode === 404) {
urlDone(url);
} else {
setTimeout(() => {
requestFn(url);
}, 1000);
};
}).on('error', (err) => {
// какойто хендл ошибки
urlDone(url);
});
};
function urlDone(url) {
urlsInWork = urlsInWork.filter(u => u !== url);
if (urls.length > 0) {
let nextUrl = urls.pop();
urlsInWork.push(nextUrl);
requestFn(nextUrl);
} else if (urlsInWork.length === 0) {
clearInterval(voidInterval);
};
};
var users = [
{
id: 1,
items: [
{ id: 124, price: 1 },{ id: 31, price: 1 },{ id: 32, price: 1 },
],
},
{
id: 2,
items: [
{ id: 345, price: 1 },{ id: 2, price: 1 },{ id: 166, price: 1 },
],
},
];
function usersFindOne(itemsArr) {
return users.find(u => {
return u.items.every(item => itemsArr.includes(item.id));
});
};
console.log(usersFindOne([124, 32, 31]));
console.log(usersFindOne([345, 111, 166, 2]));
const blacklist = Files.readFileSync('./blacklist.txt', 'utf8').split(/\r?\n/);
const users = Files.readFileSync('./users.txt', 'utf8').split(/\r?\n/).filter((user) => {
var idx = blacklist.indexOf(user);
if (idx === -1) {
return true;
} else {
blacklist.splice(idx, 1); // тут я не уверен в профите уменьшения блеклиста, потому что это надо будет перестраивать индексы, так что можно просто сделать return blacklist.indexOf(user) === -1;
return false;
};
});
pool.max = 1;
while(notGoodEnough) {
pool.max++;
}
var originalArr = [...];
var firstArr = originalArr.slice(0, 19);
var restArr = originalArr.slice(19);
firstArr.forEach(fetchNext);
function fetchNext(url) {
if (!url) {
return;
};
fetch(url).then().catch().finaly(() => {
fetchNext(restArr.shift());
});
};
{
questionNumber: 1,
nextTipOn: Date.now() + 300000;
}