Столкнулся с такой проблемой при использовании socket.io: есть цикл в нем находится socket.emit('event', callback) у меня не получается дождаться ответа от on и обрабатывается только последнее значение цикла. Как мне дождаться ответа socket.emit и дождаться выполнения и после выполнения продолжать перебор цикла. пробовал async / await, не помогает
Серверная часть:
socket.on ('GetProducts', (params, callback) => {
idCat = params['idCat'];
var url = 'страница json'
http.get (url, res => {
res.setEncoding ('utf8');
var body = '';
res.on ('data', data => {
body += data;
});
res.on ('end', () => {
json = JSON.parse (body);
callback (json);
});
});
});
});
Клиентская часть:
function ControlChecked () {
$ ('#tableListProductLeads').empty ();
socket = [];
$ ('#tableCategoreLeads > tr > th > input').each ( (index, element) => {
if ($ (element).is (':Checked')) {
socket[index] = io (ArdServ);
idCat = $ (element).attr ('idCat');
socket[index].emit ('GetProductsLeads', {idCat}, data => {
data = data['data'];
FilltableListProductLeads (data, idCat);
});
}
});
}
Если я правильно понял, то вы в цикле плодите новые сокеты? Может достаточно одного и создать событие на клиенте для прослушивания ответа?
Переделайте так:
Серверная часть:
socket.on ('GetProducts', (params, callback) => {
idCat = params['idCat'];
var url = 'страница json'
http.get (url, res => {
res.setEncoding ('utf8');
var body = '';
res.on ('data', data => {
body += data;
});
res.on ('end', () => {
json = JSON.parse (body);
callback (json);
});
});
});
});
Клиентская часть:
function ControlChecked () {
$ ('#tableListProductLeads').empty ();
socket = [];
$ ('#tableCategoreLeads > tr > th > input').each ( (index, element) => {
if ($ (element).is (':Checked')) {
socket[index] = io (ArdServ);
idCat = $ (element).attr ('idCat');
GetProductsLeads(socket[index], idCat);
}
});
}
function GetProductsLeads(socket, id) {
socket.emit ('GetProductsLeads', {id}, data => {
data = data['data'];
FilltableListProductLeads (data, id);
});
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как можно заменить точку на запятую в input type="number", при этом сохранить ввод отрицательных чисел и диапазон, установленный в HTML?
Вроде гуглил и ошибка такая возникает когда передается не StringЗдесь вроде всё ок, но почему то ошибка