На сайте после создания заказа клиент переходит на страницу, где ему откликаются боты через рандомные промежутки времени(чтобы выполнить его заказ) . Боты пушатся в socket через php, nodejs принимает и рендерит на странице.
Боты должны переодично пушить сообщения в чат, делать это асинхронно, поскольку боты из сервера могут приходить в рандомном промежутке времени.
Код на nodejs
managementNsp.on('connection', function(socket){
socket.on('addBid', function (data) {
if (data.writer.isBot) {
function asyncPushToChat() {
var messagesArray = ["Hello", "Test message"];
messagesArray.forEach(function(item) {
setTimeout(function(){
push(item);
}, randomSeconds);
});
}
}
});
Как функцию asyncPushToChat сделать асинхронной??
если так переписать на промисы, это верно?
managementNsp.on('connection', function(socket){
socket.on('addBid', function (data) {
if (data.writer.isBot) {
function asyncPushMessageToChat()
{
return new Promise(function(resolve, reject)
{
connection.query("SELECT text FROM bot_message", function (err, messagesArray) {
if (err) {
reject(err);
}
messagesArray.forEach(function(item) {
setTimeout(function(){
return resolve(item);
}, randomSeconds);
});
});
});
}
asyncPushMessageToChat()
.then(function(res)
{
//append to html
})
.catch(function(err){
console.log(err);
});
}
});
Виртуальный выделенный сервер (VDS) становится отличным выбором
Вопрос: как можно решить данную зависимость чтобы в результате выполнения было только 2 объекта без промежуточных или по другому чтобы в стеке...
Сразу прошу прощения, если глупый вопрос, но я так и не понял, есть ли такое в yii2, и если есть - то как им пользоватьсяЧто я имею ввиду: есть такой...