Je construis un Dapps connecté avec Ethereum Blockchain. J'ai une fonction JavaScript qui appelle une méthode asynchrone à l'intérieur.Impossible de passer le tableau à afficher avec des méthodes asynchrones
async function getFiles(id, array){
if(id < 2){
myContract.consultFile.call(id,"0x2b461Db580028F263351B969cFd8542db696787E",function(err, res){
array.push({title : res[0], description : res[1]});
getFiles(++id, array);
});
}
return array;
}
Ces premières méthodes devraient-elles être asynchrones?
Ensuite, j'ai dans mon assistant une fonction qui appelle la précédente. C'est la version la plus proche que j'ai, mais elle retourne un objet de promesse.
Avec cette version, je peux voir avec console.log()
que [[PromiseValue]] est correct.
Mais quand j'essaie de l'afficher avec {@each files}} avec le code ci-dessous, rien ne se passe, alors que si je renvoie tmp je peux voir [Object Promise]. Le tableau est-il bien envoyé? Comment dois-je afficher le tableau?
Template.myDocuments.helpers({
'files': function(){
var tmp = getFiles(0,[]);
tmp.then(function(val){
console.log(val);
return val;
});
}
});
Cela ne fonctionne pas pour moi ... Je suis parvenu à le faire en mettant l'appel directement dans la méthode onCreated() et quand En poussant dans le tableau, utilisez TemplateVar.set à chaque fois. – glaulom