Question

J'ai écrit le code suivant à l'aide Node.js et Riak-js . J'ai un walk de fonction récursive qui devrait être une liste de documents JSON, mais retourne à la place une liste vide ... pourquoi? comment fixer?

require('riak-js');

var walk = function(bucket, key, list){ 
  if(list == undefined){
    var list = new Array();
  } 
  db.get(bucket, key)(function(doc, meta){     
     list.push(doc);
     if(meta.links.length > 0 && meta.links[0].tag == 'child'){
       walk(bucket, meta.links[0].key, list);
     }   
  });
  return list; 
}

familytree = walk('smith', 'walter', []);  

Merci à l'avance!

Était-ce utile?

La solution

Vous obtenez un tableau vide parce que db.get() est asynchrone. Il retourne immédiatement sans attendre le rappel à invoquer. Par conséquent, lorsque l'interpretor atteint l'instruction de return list, list est encore un tableau vide.

Il est un concept fondamental dans Node.js (et même dans les scripts de navigateur) que tout est asynchrone (sans blocage).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top