Цикл запроса API Node.js без перегрузки памяти - PullRequest
0 голосов
/ 27 февраля 2019

Это может показаться странным, но я пытаюсь обновить API столько раз, сколько возможно, пока значение response.data не достигнет определенного числа.Вот мой код ниже

const axios = require('axios');
const api = require('./api.json');
const infinity = 0;

let url = 'http://api.site.com/api.php?i=${api[item].appid}';

function api_call(item){
  axios.get(url)
    .then(response => {
      let id = response.data.id;
      if (id > 10){
        return true;
      }else{
        return false;
      }
    })
    .catch(error => {
      console.log(error);
    });
  }

  function loop(variable) {
    while (infinity < 1) {
      if (api_call(variable) > true) {
        break;
        console.log('Found');
      }
      console.log('-');
    }
  }

Это может показаться странным, но, очевидно, я изменил его, хотя этот код все еще достиг бы цели, аналогичной той, которую я пытаюсь выполнить с моим кодом.По сути, он контролирует API, пока изменение значения не инициирует действие.Возможно, я делаю что-то не так, но когда я запускаю свою версию этого кода (меняются только API и имена значений), я начинаю использовать большие объемы памяти до такой степени, что программа останавливается и выдает мне эту ошибку

<--- Last few GCs --->

[11524:000001E5724778C0]    93390 ms: Mark-sweep 1395.2 (1426.2) -> 1394.5 (1425.7) MB, 629.4 / 0.0 ms  (average mu = 0.139, current mu = 0.053) allocation failure scavenge might not succeed
[11524:000001E5724778C0]    94039 ms: Mark-sweep 1395.4 (1425.7) -> 1394.8 (1426.2) MB, 638.3 / 0.0 ms  (average mu = 0.079, current mu = 0.016) allocation failure scavenge might not succeed


<--- JS stacktrace --->

наряду с дополнительной информацией (если это необходимо, я могу отредактировать сообщение и добавить его), я считаю, что это связано с тем, как я собираю данные, возможно, есть какая-то процедура, о которой я забыл, я не такконечно и не могу найти каких-либо похожих тем по этому поводу.Заранее благодарю за любую помощь.Если требуется больше информации, просто спросите, я добавлю больше.enter image description here

1 Ответ

0 голосов
/ 11 марта 2019

У меня была небольшая тренировка, и это то, что я закончил тем, что начал работать.

     const axios = require('axios');
     const api = require('./api.json');
     const infinity = 0;   

    function api_call(item) {
      let url = `http://api.site.com/api.php?i=${api[item].appid}`;
        axios.get(url)
    .then(response => {
      let id = response.data.id;
      if (id > 10){
        return true;
      }else{
        return false;
      }
    })
    .catch(error => {
      console.log(error);
    });
  }

    async function checkAPI(variable) {
      const res = await api_call()

      if (res) {
        //success
      } else {
        //Fail
      }
    }

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