Как зациклиться с одной и той же переменной, но с другим значением

Я отображаю некоторые элементы с помощью JSON

Прежде чем начать, вот порядок, который я должен иметь: toto-> titi-> tata-> trtr-> tktk-> tztz

Я должен публиковать следующую работу на каждой итерации, зная, что первая — toto

Итак, на данный момент у меня есть: тото тити тата

И я не могу посмотреть, как шлейф, чтобы увидеть все остальное.

function getall() {
    ajaxGet(".../toto/api/json?pretty=true", recover);
}
getall(); 
function ajaxGet(url, callback) {
    ...
}

function recover(response){
    var Json = JSON.parse(response);
    var Data = Json.downstreamProjects.map(function(group) {    
            console.info("toto");
            //toto
            console.info(group.name);    
            //titi
            ajaxGet2("..."+group.name+"/api/json?pretty=true", recover2);    

        });          
}

function ajaxGet2(url, callback) {
    ....
}

function recover2(response){
    var Json = JSON.parse(response);
    var Data = Json.downstreamProjects.map(function(group) {        
            console.info(group.name);
            //tata       
    });       
}

/* JSON Downstreamproject for toto 
"downstreamProjects" : [
{
  "_class" : "****",
  "name" : "titi",
  "url" : "https://**/***/titi/",
  "color" : "blue"
}
],
*/

Фактический результат: тото тити тата

Ожидаемый результат (с циклом): тото тити тата тртр тктк цц

У меня проблемы с пониманием того, что вы имеете в виду, но если вы имеете в виду, что порядок переменных, используемых для вызовов ajax, не соответствует результирующему порядку обратных вызовов ajax: выполнение ajax является асинхронным. Если вы хотите сохранить порядок, вы можете использовать обещания и связать их.

LongHike 19.02.2019 12:36

Проще говоря, у меня есть задания, и я должен отображать правильный порядок этих заданий. Я просто знаю, что первое задание — это toto, и я могу опубликовать следующее задание. Итак, я сделал черновик и знаю, что порядок такой: toto tata trtr tktk tztz функция downstreamProjects отображает следующее задание.

Koor Koor28 19.02.2019 12:41

Что происходит, так это то, что вы запускаете шесть асинхронных вызовов функций: toto-> titi-> tata-> trtr-> tktk-> tztz Пока эти вызовы выполняются, вы получаете три ответа ajax toto-> titi-> tata-> Затем ваш процесс заканчивается, потому что он заканчивается, когда ваши звонки выполняются с запуском вызовов ajax. Вам нужно заставить программу ждать, пока она не получит все ответы ajax. Есть несколько техник, позволяющих справиться с такими ситуациями. Использование обещаний было бы предпочтительным способом решения вашей проблемы. Я бы также рекомендовал использовать библиотеку, такую ​​​​как axios, для http-запросов, которая уже обещана.

LongHike 19.02.2019 13:01

Ок, попробую что-нибудь сделать...

Koor Koor28 19.02.2019 14:06
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
66
1

Ответы 1

Я думаю, вам нужно зациклить вызов ajaxGet внутри функции getAll(). как показано ниже:

let group = [toto, titi, tata, trtr, tktk, tztz]    
function getall() {
for(let groupName in group) {
    ajaxGet(".../<groupName>/api/json?pretty=true", recover);
}
}

Спасибо за ваш ответ, я не использую массив и знаю только первый (toto)

Koor Koor28 19.02.2019 13:51

@ KoorKoor28 Так как же получить другое имя группы? Я имею в виду, как они генерируются?

pride 19.02.2019 18:57

и функция downstramprojet отображает следующее задание, поэтому мне нужно сделать цикл

Koor Koor28 20.02.2019 09:41

@ KoorKoor28, не могли бы вы поделиться кодом для downstramProject, а также примером JSON?

pride 20.02.2019 12:08

DownstreamProject уже находится в сценарии восстановления функции, и я добавил JSON для большего понимания, спасибо

Koor Koor28 20.02.2019 12:17

Другие вопросы по теме