getJSON внутри функции

143
15 марта 2019, 22:50

Продолжение данной темы Поиск и возврат значения по ID (for json) Возникла другая проблема. Изначально планировалось использовать данный код, как функцию замены ID на Name. Почитал, что функция getJSON не может так работать, т.к. async = true.

Как мне сделать данную функцию рабочей. Перерыл весь Стак и Гугл, ответы нашел, но не получилось их реализовать.

function fachang(sid) {
    $.getJSON('<?php echo $servers; ?>', function(data) {
        $(data.data.servers).each(function(index, server) {
            if(server.id == sid){ //sid = id сервера
                return server.hostname;
            }
        });   
    });
}
alert(fachang(30)); // хотелось бы тут ответ - #SERVER xD 1
Answer 1

var json = { 
  data : { 
    servers:[ 
      { 
        "id":30, 
        "hostname":"#SERVER xD 1" 
      }, 
      { 
        "id":41, 
        "hostname":"#SERVER xD 2" 
      } 
    ] 
  } 
}; 
 
function fachang(sid, callback) { 
    $(json.data.servers).each(function(index, server) { 
      if(server.id == sid){ //sid = id сервера 
        if(callback){ 
          callback(server.hostname); 
        } 
      } 
    });    
} 
 
fachang(30, function(result) { 
	alert(result); 
}); 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

для того чтобы получить информацию от async функций, необходимо использовать callback или promice. Так же можно посмотреть в сторону async/await

READ ALSO
Функции в JavaScript, Прототипы

Функции в JavaScript, Прототипы

Изучаю JavaScriptЧто значит "

150
Увеличение длины на элемента на JavaScript

Увеличение длины на элемента на JavaScript

Пишу змейку на JavascriptНужно чтобы после прохождения через ячейку где находится еда длина змеи увеличивалась

162