J'ai du mal à comprendre le code javascript suivant:

/**
* Outputs the result of compiling a template.
*
* @module generator.generate
* @param  {Object}        config Configuration options
* @param  {Object|String} config.asyncapi AsyncAPI JSON or a string pointing to an AsyncAPI file.
* @param  {String}        config.target_dir Path to the directory where the files will be generated.
* @return {Promise}
*/
generator.generate = config => new Promise((resolve, reject) => {
 bundleAndApplyDefaults(config)
   .then((cfg) => {
     async function start () {
       await registerHelpers(cfg);
       await registerPartials(cfg);
       await generateDirectoryStructure(cfg);
     }

     start().then(resolve).catch(reject);
   })
   .catch(reject);
});

Plus précisément dans quel ordre les .then sont appelés et à quelle promesse ils appartiennent. Je pense que le premier .then est appelé lorsque la méthode bundleAndApplyDefaults(config) est terminée. Mais je ne sais pas d'où vient le paramètre cfg.

A l'intérieur de la fonction start() est appelée et la deuxième .then avec la résolution de la promesse d'origine est exécutée, la promesse d'origine n'a que .catch (rejet) en dehors de l'exécuteur et pas .then pour réussir , Pour autant que je sache.

Je ne sais pas non plus pourquoi il y a un .then après la méthode de démarrage, alors qu'il n'y a aucune promesse réelle.

J'apprécie toute aide.

0
NicO 14 janv. 2020 à 13:59