J'ai une application qui nécessite des données chargées dans un certain ordre: l'URL de la racine, puis les schémas, puis enfin initialiser l'application avec les schémas et les url pour les différents objets de données. En tant que l'utilisateur quitte l'application, les objets de données sont chargés, validé par rapport au schéma, et affiché. En tant qu'utilisateur CRUDs les données, les schémas de fournir de la première étape de la validation.
Je vais avoir un problème avec l'initialisation. J'utilise un appel Ajax pour récupérer l'objet racine, $.lors de la(), puis créer un tableau de promesses, un pour chaque schéma de l'objet. Qui fonctionne. Je vois le chercher dans la console.
Je vois alors l'extraction de tous les schémas, de sorte que chaque $.ajax() fonctionne. fetchschemas (), en effet, de retourner un tableau de promesses.
Cependant, ce dernier lorsque() de la clause jamais les incendies et le mot "FAIT" n'apparaît pas sur la console. Le code source de jquery 1.5 semble impliquer que "null" est acceptable comme un objet pour passer de $.lors de l'.appliquer(), comme lors de l'() va créer un interne en Différé() de l'objet de gérer la liste si aucun objet n'est passé.
Cette travaillé à l'aide de Futures.js. Comment devrait-un tableau de jQuery Deferreds être géré, si ce n'est comme cela?
var fetch_schemas, fetch_root;
fetch_schemas = function(schema_urls) {
var fetch_one = function(url) {
return $.ajax({
url: url,
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json"
});
};
return $.map(schema_urls, fetch_one);
};
fetch_root = function() {
return $.ajax({
url: BASE_URL,
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json"
});
};
$.when(fetch_root()).then(function(data) {
var promises = fetch_schemas(data.schema_urls);
$.when.apply(null, promises).then(function(schemas) {
console.log("DONE", this, schemas);
});
});