recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment attendre le clic sur le bouton dans la chaîne de promesses pour suspendre l'exécution ?

<p>J'essaie d'enchaîner certains appels backend pour traiter les fichiers, mais l'ensemble du flux de travail nécessite que l'utilisateur fournisse des informations à mi-parcours. Je ne sais pas comment suspendre l'exécution jusqu'à ce que l'utilisateur clique sur un bouton "<code>Continuer</code>" afin qu'il puisse continuer à travailler. </p> <p>Le processus est donc le suivant :</p> <ol> <li>L'utilisateur sélectionne un fichier et déclenche un événement pour télécharger des données. ≪/li> <li>Je reçois la réponse de l'appel précédent, en ouvrant un modal avec un formulaire. Je dois faire une pause ici. ≪/li> <li>Remplissez le formulaire et cliquez sur le bouton <code>Continuer</code> ≪/li> <li>Déclenchez un autre appel pour soumettre plus d’informations à un autre point de terminaison. ≪/li> </ol> <p> Chacune de ces étapes implique donc une requête HTTP, utilisant <code>axios</code>, mais j'ai du mal à comprendre comment enchaîner ces promesses. </p> <p>Maintenant, j'ai un code similaire à : </p> <pre class="brush:js;toolbar:false;">onFileSelected(event) { // code ici axios .poste("") .then((res) => { //Ici, je dois ouvrir la boîte modale et attendre que l'on clique sur le bouton }) .then(() => { une autreMéthode(); }); } ≪/pré> <p><br /></p>
P粉170438285P粉170438285461 Il y a quelques jours746

répondre à tous(1)je répondrai

  • P粉277824378

    P粉2778243782023-08-16 10:20:51

    Promise elle-même ne fournit pas de méthode pour suspendre l'exécution, mais vous pouvez utiliser la syntaxe async/wait pour y parvenir. Créez une promesse personnalisée qui se résout lorsque l'utilisateur clique sur le bouton « Continuer ». Comme ça :

    async function onFileSelected(event) {
      try {
        const response = await axios.post("") // 上传数据
        await showModalAndWaitForUserInteraction() // 暂停并等待用户输入
    
        await anotherMethod() // 用户交互后继续执行
    
        // 继续执行剩余的Promise链
        const anotherResponse = await axios.post("") // 提交更多信息到另一个终点
        // ...
      } catch (error) {
        // 在这里处理错误
      }
    }
    
    function showModalAndWaitForUserInteraction() {
      return new Promise((resolve) => {
        // 显示带有按钮的模态框
        // ...模态框逻辑
        // 然后 resolve() 
      })
    }
    

    répondre
    0
  • Annulerrépondre