0
votes

Obtenir une erreur avec une fonction non prometteuse dans une chaîne de promesse

dans le code de base tiers, j'ai trouvé cette chaîne de promesse: xxx

pour résoudre un certain problème dans l'application, j'ai besoin de supprimer le premier lien de la chaîne ( Dispatch ('starttask', ... root: true}) ): xxx

Cependant, cela déclenche l'erreur suivante:

Enrichsignuppayload (...). Ensuite, ce n'est pas une fonction

Pourquoi? Il n'y avait aucune erreur avant de supprimer le premier lien, alors pourquoi le deuxième lien devient un problème maintenant? Je ne comprends pas.

Voici le corps du EnrichsignuPAYload () Fonction juste au cas où: xxx


0 commentaires

3 Réponses :


0
votes

Avez-vous essayé d'ajouter une fonction pour revenir xxx


0 commentaires

1
votes

Vous obtenez cette erreur parce que enrichsignuppayload ne renvoie pas un prometteur comme Dispatch . En outre, la première version de d'inscription car un appel à promesse.then renvoie également un prometteur , afin que nous puissions appeler le prochain .Ce dessus. Reportez-vous à This pour plus d'informations à ce sujet.

Je suppose, pour faire fonctionner les choses que vous pourriez faire Quelque chose comme: xxx

ou si le enrichsignuppayload n'est pas asynchronisé, vous pouvez simplement faire simplement: xxx


4 commentaires

La première solution fonctionne beaucoup grâce à beaucoup, mais le second semble beaucoup mieux. Pour une raison quelconque, quand je le fais, la chaîne de promesse semble résoudre instantanément sans passer à travers tous ses liens. Une idée pourquoi?


Comme mentionné dans la réponse, Enrichsignuppayload doit être synchrone pour que la deuxième solution fonctionne correctement.


Pour autant que je puisse le dire, il est synchrone, vous ne pouvez voir aucun appel d'API asynchrone dans aperofromstorage et isfromapp () est définitivement synchrone aussi.


HM, ça devrait fonctionner alors .. Quelle chaîne de promesse parlez-vous? Voir aucune chaîne dans la deuxième solution



0
votes

enrichsignuppayload code> ne renvoie pas une promesse.

Vous pouvez envelopper le résultat en utilisant promess.Resolve code> : p>

const signUp = ({ dispatch, commit, getters }, payload) =>
    Promise.resolve(enrichSignUpPayload(payload, getters))
        .then(apiRequest.signUpB2b)


1 commentaires

Appliquer la première solution de @streletss fonctionne, mais sa deuxième solution, tout comme la vôtre semble faire la résolution de la chaîne sans passer à travers toutes les étapes. Une idée pourquoi?