Il existe un tableau d'objets, qui sont développés avec des requêtes ajax parallèles. Lorsque la dernière requête est terminée, le tableau doit être traité. La seule solution que je vois est:Condition de concurrence asynchrone JavaScript
function expandArray(objects, callback){
number_of_requests=objects.length-1;
for(i in objects){
$.getJSON(request,function(){
//expanding array
if(--number_of_reuests==0){
callback();
}
});
}
}
Mais comme les demandes sont exécutées en parallèle, il y a un risque de condition de concurrence. La variable number_of_requests peut être éditée par deux "threads" simultanément. Comment éviter le risque de condition de course?
Si 'objects' est un objet, il n'y a pas de propriété générique' length'. Et si c'est un tableau, vous ne devriez pas utiliser 'for ... in' mais le compte normal' for'. – Gumbo
vous avez raison, mais il est possible que vous définissiez un objet avec une variable de longueur. – nickf
JavaScript est mono-thread, il n'y a donc aucune possibilité de modification de la variable par deux threads séparés. – NickFitz