@Ablovka

Как осуществить продолжение/перезапуск работы скрипта JS при отсутствии переменной?

Есть код, который берет json с другого сайта:
function pars(){
var startTimer = new Date().getTime();
logger.trace('Parsing launched');
 request({
        url: "https://skinsjar.com/api/v3/load/bots",
        json: true,
        timeout: 3000,
    }, function (error, response, body) {
        var elapsed = new Date().getTime() - startTimer;
		logger.trace("Parsing finished "+elapsed+"ms.");
		if (body.bots){
		updatePrice(body, startTimer);
		} else {
			logger.warn("Site unavailable");
		}	
    });
}

Сайт стоит на cloudflare, поэтому если сайт лежит, то возвращается ошибка 520.
if (body.bots){
		updatePrice(body, startTimer);
		} else {
			logger.warn("Site unavailable");
		}

Этот код не работает и если сайт лежит, то body.bots не существует и скрипт останавливается.
Как правильно осуществить проверку на отсутствие, что бы сработало else?
  • Вопрос задан
  • 289 просмотров
Решения вопроса 1
crazy_leo
@crazy_leo
Frontend Developer
if (typeof body == "object" && body.bots){
    updatePrice(body, startTimer);
    } else {
      logger.warn("Site unavailable");
    }
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@RidgeA
проверить статус ответа было бы неплохо.
Если не ошибаюсь
response.statusCode
Ответ написан
Комментировать
bubandos
@bubandos
bash'у, javascript'ую, php'лю, css'аю, html'каю
1) if (!error) {
...
}
проверяем, есть ли ошибки, 520 ошибка благополучно отработает.
2) if(response) {
...
}
проверяем есть ли ответ
3) if (body && body.bots) {
...
}
проверяем, есть ли в ответе данные и в этих данных bots
Ответ написан
Комментировать
Krasnodar_etc
@Krasnodar_etc
fundraiseup
Если очень хочется именно таким методом, то
if (body && ~Object.keys(body).indexOf('bots') )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 19:51
15000 руб./за проект
22 нояб. 2024, в 19:15
200000 руб./за проект
22 нояб. 2024, в 18:50
30000 руб./за проект