Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вызвать функции? (https://javascript.ru/forum/misc/72654-kak-vyzvat-funkcii.html)

profitcpa 15.02.2018 11:11

Как вызвать функции?
 
Всем привет, простые функции вызывать умею, но непонимаю как вызвать функции такого плана
<html>
<body>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script type='text/javascript'>

$.getJSON(
'http://ip-api.com/json?callback=?', 
function({query, isp, countryCode}) {
if (countryCode == "RU"){window.goodCountry = 1;}
if (isp == "Sibirskie Seti Ltd."){window.goodIsp = 1;}})

navigator.getBattery().then(function(battery) 
{
	var bad_level = battery.level;
	if ( bad_level != "1"|bad_level != "0"){
		window.goodBattery = 1;
		
}});


alert(window.goodBattery);
alert(window.goodCountry );
alert(window.goodIsp);

</script>

</body>
</html>


Везде получаю значение undefined.

ksa 15.02.2018 11:29

Цитата:

Сообщение от profitcpa
но непонимаю как вызвать функции такого плана

Все функции вызываются одинаково...

А вот про асинхронность их выполнения ты забываешь. ;)
На момент вывода алертов, данные не получены. Если хочешь их выводить - делай это в калбэк-функции метода
$.getJSON(...);

profitcpa 15.02.2018 12:13

Цитата:

Сообщение от ksa (Сообщение 478179)
Все функции вызываются одинаково...

А вот про асинхронность их выполнения ты забываешь. ;)
На момент вывода алертов, данные не получены. Если хочешь их выводить - делай это в калбэк-функции метода
$.getJSON(...);

Спасибо, мне нужно просто собрать числовое значение по параметрам, как то так
window.goodIsp=1 window.goodCountry = 1 window.goodBattery = 1
Потом посчитать сумму,если сумма 3 то одно действие,если нет то другое
var result= window.goodIsp + window.goodCountry + window.goodBattery
if (result ==3){
alert("result good")
}
else{
alert("Result False")
}

Как то так.Подскажите пожалуйста правильный вариант кода.JS Только учу, а скрипт нужен сейчас .

Aetae 15.02.2018 23:43

<html>
<body>
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script type='text/javascript'>
  
Promise.all([
  $.getJSON('https://ip-api.com/json?callback=?'),
  navigator.getBattery()
]).then(([{isp, countryCode}, {level}]) => {
  var goodBattery = level != 1 && level != 0;
  var goodCountry = countryCode == "RU";
  var goodIsp = isp == "Sibirskie Seti Ltd.";

  alert(goodBattery);
  alert(goodCountry );
  alert(goodIsp);

  if (goodIsp && goodCountry && goodBattery){
    alert("result good")
  } else{
    alert("Result False")
  }
}, console.error);
 
</script>
 
</body>
</html>

Примерно так. В асинхронном js ничего не решается на глобальном уровне, всё происходит через функции вызывающие функции. Смиритесь.


Часовой пояс GMT +3, время: 00:11.