Узел js - синхронное выполнение объектных функций Websocket - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть следующие подобные функции

//Have to connect to a websocket
var websocket = new WebSocket(wsUri);
var channel = new WebChannel(websocket);

Веб-канал возвращает объект со списком функций

//The following functions
actualTest1Value = 1;
actualTest2Value = 2;
objectReturned = channel.object.objectReturned
test1= objectReturned.getValueFor("Sample");
test2 = objectReturned.getValueFor("Sample1");
if(test1 === actualTest1Value && test2 === actualTest2Value)
{
  //do some Operation
}

Проблема здесь в том, что test1и тест 2 не определен из-за асинхронного характера узла js.Поскольку объект возвращается с сервера, я не могу добавить обещание к функциям объекта.Есть ли способ выполнить это синхронно?

1 Ответ

0 голосов
/ 24 ноября 2018

Я сделал небольшой обходной путь для выполнения одного за другим.

test1 = objectReturned.getValueFor("Sample", function(returnVal){
test1 = returnVal;
compare();
});
test2 = objectReturned.getValueFor("Sample1", function(returnVal){
test2 = returnVal;
compare();
});

После этого обернуть сравнение в отдельную функцию

function compare()
{
   //before doing this check test2 is not undefined, because both values will be 
   //defined on second callback.
   if(test1 === actualTest1Value && test2 === actualTest2Value)
   {
        //do some Operation
   }
}

Я былмне повезло иметь test1 и test2 в качестве глобальных переменных и вызывать функцию compare () для обратного вызова каждой функции и сравнивать оба значения только тогда, когда обратный вызов приходит из второго, помогло мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...