Boucle asynchrone, utiliser réponse précédente

Bonjour,

je suis novice en vue-js et je n’arrive pas à mes fins malgré toutes mes recherches…

Dans une boucle de mutation asynchrone, je cherche à utiliser le résultat (id) d’une première mutation pour pouvoir mettre en “parent id” de la deuxième mutation et ainsi de suite… (C’est pour créer une arborescence de dossier parents/enfants)

Voici le code :

foldersToCreate.map(async(folderToCreate, index) => {
          console.log(this.parentFolderId)
          await this.$apollo.mutate({
            mutation: createAssetFolderMutation,
            variables: {
              parentFolderId: this.parentFolderId,
              slug: folderToCreate
            },
            update: (store, info) => {
              this.parentFolderId = info.data.assets.createFolder.id
              console.log(this.parentFolderId)
            }
          })
        })

Je pense être obligé d’utiliser une boucle asynchrone pour les mutations apollo?!

Merci de vos réponses,

Kévin

si je comprends bien, ton problème est que toutes tes fonctions asynchrone sont lancées en parallèles avec map mais tu voudrais que chacune dépende du résultat de la précédente
i.e. tu voudrais que tes fonctions asynchrone soient lancées en série, il faut donc utiliser une boucle for

voilà ce que donne ton code en série :

          for (const folderToCreate of foldersToCreate) {
            await this.$apollo.mutate({
              mutation: createAssetFolderMutation,
              variables: {
                parentFolderId: this.parentFolderId,
                slug: folderToCreate
              },
              update: (store, info) => {
                this.parentFolderId = info.data.assets.createFolder.id
              }
            })
          }