Ich habe eine Reihe von "Projekten", die die ID des Projekteigentümers und den Titel des Projekts enthalten.AJAX-Anfragen innerhalb der Schleife: Abbruch bestimmter Ajax-Anrufe basierend auf der Antwort des vorherigen Anrufs?
Ich möchte den Namen jedes Projektbesitzers abrufen, indem ich das Array 'projects' durchlaufen und einen Anforderungsaufruf machen, indem ich die Besitzer-ID jedes Projekts an einen Server mit AJAX übergebe.
var projects = [
{owner_id: 1, title: "First project by id one"},
{owner_id: 2, title: "First project by id two"},
{owner_id: 1, title: "Second project by id one"},
{owner_id: 3, title: "First project by id three"}
];
//iterate through the 'projects' array to get the project's owner_id its respective owner_name
var owner_names = {};
projects.forEach(function(project) {
//check if the id exist in the owner_names key-value pair
if (project.owner_id in owner_names) {
//go the next iteration because we already know the owner name
return;
}
//get username by id
$.ajax({
url: '//some.com/get/owner_name/by/id/',
data: project.owner_id
}.then(function(data) {
owner_names[data.id] = data.name;
console.log("First project by " + data.name + " is " + project.title);
});
});
Ich will/nicht abbrechen die Ajax-Funktion aufgerufen wird, wenn das Projekt Iteration der „Zweiten Projekt-ID eine“ ist, weil ich die Daten bekommen hätte, wenn die Iteration „Erstes Projekt von id one“ ist.
Das heißt, ich ausgeben wollen diese (nehmen owner_id 1,2,3, ist Alice, Bob und Charlie respectively):
First project by Alice is First project by id one
First project by Bob is First project by id two
First project by Charlie is First project by id three
Aber stattdessen Ich habe diese:
First project by Alice is First project by id one
First project by Bob is First project by id two
First project by Alice is Second project by id one
First project by Charlie is First project by id three
Wie kann ich dies erreichen, während die asynchronousity Aufrechterhaltung (ohne "async = false" verwendet wird) in AJAX?
Das ist es. Vielen Dank –