0
votes

Comment faire de plusieurs promesses d'appel dans Typescript

Bonjour, je dois faire plusieurs promesses, mais je suis resté coincé, je reçois fondamentalement des données d'un service de socket qui communiquent via Modbus / TCP. J'ai pu communiquer via un plugin Cordoua, mais j'ai un problème de saisir comment les promesses fonctionnent, ici certains CODE:

if (this.machineType == 2) {
   callSoftwareVersionB() // another promise
} else {
   callSoftwareVersionC() // another promise
}


0 commentaires

3 Réponses :


1
votes

Depuis que vous utilisez angular, je vous suggère d'utiliser RXJS Observables au lieu de promesses. Les observables ne sont pas le concept le plus facile à saisir, mais ils sont assez puissants.

Si vous souhaitez continuer avec des promesses, le Async / attendre Syntaxe pourrait être utile (au lieu de se perdre dans .Chen (). Alors () déclarations).

Pour répondre à la question "Appel de promesse multiple";

  • Si vos demandes ne dépendent pas des réponses d'autres demandes, vous pouvez les exécuter ensemble à l'aide de Promise.All () fonctionnalité.
  • Si vos demandes dépendent du résultat des demandes précédentes, la documentation ASYNC / AWAIT à partir de MDN (déjà liée) peut être très utile.

    Faites-moi savoir si je peux aider avec n'importe quoi. Bonne chance. :)


2 commentaires

Tout d'abord, merci pour la réponse. Je pensais à Observables avec Rxjs et je voudrais les essayer parce que je vais refroidir cette partie du code. Comment utiliserais PROMISEALL dans ce cas? Ou si vous pouvez me montrer comment utiliser des observables dans ce cas serait génial. Merci


@ SEBBA23 La réponse de CLEMENTRSLN semble inclusive, de sorte que mon aimable conseil serait de commencer par apprendre assez bien les bases et avancer avec des observables. J'apprendrais certainement plus sur les observables, comme utilise des utilisations angulaires de RXJ (et des observables) en interne. Allez pas à pas, à votre rythme, et après avoir une compréhension claire des promesses, vous pouvez choisir votre chemin. :) Bonne chance!



2
votes

Je ne comprends pas toute votre question, mais votre problème semble apparenté uniquement aux promesses.

Si vous voulez chaîner vos promesses, vous devez retourner la résolution * (avec vos données ici *) comme ceci:

refreshData() {  
      const promises = [];
      promises.push(this.getRegistrationNumber());
      promises.push(this.swVersionRequest());
      promises.push(this.getMachineType());
      return Promise.all(promises).then(() => {
         //type your code here
      })
    }


1 commentaires

Merci je vais essayer cela aussi. Soyez patient, j'apprends toujours :) Merci



2
votes

Je vous recommande fortement des exemples assez simples comment les promesses fonctionnent, juste pour comprendre comment les promesses fonctionnent.

  • Torpscript promet des exemples
  • (Google Developers) - Promesses Javascript: une introduction

    Comme vous pouvez le constater que les promesses sont toujours la meilleure option de gérer la plupart des problèmes de synchronisation (c'est essentiellement le problème que vous avez là-bas :)), plus tard, vous pouvez commencer à voir des libs comme RXJ - angulaire pour commencer à résoudre ces problèmes.

    Conseils: est toujours cool faire un examen des concepts de base, pour comprendre les implémentations de haut niveau de certaines libs. Et parce que c'est cool apprendre ou souvenez-vous des choses que nous apprenons il y a longtemps! N'hésitez pas à demander quoi que ce soit! :)


0 commentaires