0

Написала вот такой тестовый код:

<head>
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
 <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script type="text/javascript">

var map;

function ttt () { console.log("ttt: ", map); //ttt: undefined }

function init_map(pos) { map = pos; console.log(map); }

function start(callback) { $.get('/position.php?getVar', init_map); callback(); }

$(function() {

start(function() { ttt (); });

}); </script>

</head> <body> Hello!

</body>

Функция start должна сначала брать значение из php-файла с содержимым rnbqkbnrpppppppp11111111111111111111111111111111PPPPPPPPRNBQKBNR, затем запускать функцию init_map, где передает значение переменной map, а уже потом выводить его в функции ttt(). Для этого я функцию ttt() вызываю коллбэком. Но все равно она вызывается раньше, чем отрабатывает init_map, судя по логам. Что я делаю не так? Как исправить ошибку?

  • вы не так поняли слова которые вам написали в предыдущем вопросе.......... callback не функции start надо делать, а функции $,get ....... у $,get есть callback внутри которого можно прописать любую логику, которая должна произойти после ajax запроса ...... см. мануал по $,get https://api.jquery.com/jquery.get/ ...... или на русском https://jquery-docs.ru/jQuery.get/ – Алексей Шиманский Mar 13 '22 at 15:49
  • причём она у вас уже прописана....и называется init_map – Алексей Шиманский Mar 13 '22 at 15:54
  • получается вам надо либо создать отдельную функцию в которой вывать init_map и ttt, а в callback функции $.get передавать именно её.........либо callback сделать анонимной функцией (как в доках), в которой вызывать init_map и ttt – Алексей Шиманский Mar 13 '22 at 15:56
  • @АлексейШиманский У меня в init_map передается аргумент, который цепляется из php-файла. Мне вместо init_map нужно подставить callback функцию, принимающую тот же аргумент, что и init_map, при этом содержащую init_map и ttt? – Donna Lizard Mar 13 '22 at 16:03
  • 1
    получается что так. вам не важно что данные совпадают вам важно обработать данные и вызвыать ещё доп. функции. это можно сделать последовательно.....а это можно сделать только обобщив эти действия в одной функции (аноннимной или не анонимной) – Алексей Шиманский Mar 13 '22 at 16:06
  • Поняла, спасибо – Donna Lizard Mar 13 '22 at 16:07

0 Answers0