J'ai le problème qu'au moins l'une des fonctions then() n'attend pas celle avant de se terminer.Ajouter les résultats de la deuxième requête pour répondre à la première requête
Le code est raccourci mais à peu près comme ceci:.
var objCheck = {};
var id = thisClick.attr('id');
APP.db.checkInfo.get(id).then(function (resultDetail) {
objCheck.details = resultDetail;
}).then(function() {
var checkPoints = APP.db.checkRooms.where('check_id').equals(id);
checkPoints.toArray(function(dataArray) {
dataArray.measures = [];
objCheck.checkpoints = dataArray;
});
}).then(function() {
var arrayLength = objCheck.checkpoints.length;
for (var i = 0; i < arrayLength; i++) {
var roomId = objCheck.checkpoints[i].room_id;
var measure = APP.db.measures.where('room_id').equals(roomId);
measure.toArray(function(dataArray) {
objCheck.checkpoints[i].measures = dataArray;
});
}
}).then(function() {
$.ajax(
// Here I send then objCheck to the server
).done(...);
}).catch(function(error) {
alert ("Error upload: " + error);
});
Si j'imprimer le objCheck à la console à la fin, je vois que les mesures sont remplies Mais en ajax() appeler est pas envoyé le long. Donc il me semble que la dernière fois() court avant la fin de la deuxième.
Cela ressemble à un malentendu de mon côté. Quelqu'un peut-il me dire ce qui ne va pas dans ma logique?
[S'il vous plaît ne pas mettre des balises dans les titres de question] (https: // stackoverflow.com/help/tagging) – Liam
@Liam Merci. Je ne savais pas à ce sujet. Je pensais que parce que ma question est spécifique à une bibliothèque, il serait logique de l'affiner dans le titre. –