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

У меня есть код, подобный следующему

function getData()
{
   for(var i=0; i<someLength; i++)
   {
       if(i===0)
       {
          response = callApi(someValue[i]);
       }
       else if(i===1)
       {
          responseInsert = callWebSocket(response, someValue[i]);
       }       
   }
}
function callApi(insertData)
{
  axios({
  method: 'post',
  url: 'http://localhost:1130/services/request',
  data: insertData,
  headers: { 'content-type': 'application/xml;charset=utf-8' }
  }).then(function (response) {
  console.log(response);
  retVal = true;
  return retVal;
  }).catch(function (error) {
  console.log(error);    
 });
}

В этом ответ необходим для функции callWebsocket со значением массива, что должно быть достигнуто с помощью цикла.Но функция callWebSocket вызывается до того, как приходит ответ, из-за асинхронного характера узла js.Но у меня есть сценарий использования сценариев на стороне сервера, и я выбираю узел js.Любая помощь в выполнении функций синхронно с установленным циклом спасет меня.

1 Ответ

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

Вам нужно немного изменить метод callApi.Попробуйте это:

async function getData()
{
   for(var i=0; i<someLength; i++)
   {
       if(i===0)
       {
          response = await callApi(someValue[i]);
       }
       else if(i===1)
       {
          responseInsert = callWebSocket(response, someValue[i]);
       }       
   }
}
function callApi(insertData)
{
  return axios({
  method: 'post',
  url: 'http://localhost:1130/services/request',
  data: insertData,
  headers: { 'content-type': 'application/xml;charset=utf-8' }
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...