Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menunggu klik butang dalam rantai Janji untuk menjeda pelaksanaan?

<p>Saya cuba merantai beberapa panggilan bahagian belakang untuk memproses fail, tetapi keseluruhan aliran kerja memerlukan pengguna untuk memberikan beberapa input separuh jalan. Saya tidak pasti cara untuk menjeda pelaksanaan sehingga pengguna mengklik butang "<kod>Teruskan</kod>" supaya ia boleh terus berfungsi. </p> <p>Jadi prosesnya adalah seperti berikut:</p> <ol> <li>Pengguna memilih fail dan mencetuskan acara untuk memuat naik beberapa data. </li> <li>Saya mendapat respons daripada panggilan sebelumnya, membuka modal dengan borang. Saya perlu berhenti sebentar di sini. </li> <li>Isi borang dan klik butang <kod>Teruskan</kod> </li> <li>Cetuskan panggilan lain untuk menyerahkan maklumat lanjut ke titik akhir yang lain. </li> </ol> <p>Jadi, setiap langkah ini melibatkan permintaan HTTP, menggunakan <code>axios</code>, tetapi saya menghadapi masalah memahami cara merantai janji ini. </p> <p>Sekarang saya mempunyai kod yang serupa dengan: </p> <pre class="brush:js;toolbar:false;">onFileSelected(event) { // kod di sini aksios .post("") .then((res) => { //Di sini saya perlu membuka kotak modal dan menunggu butang diklik }) .then(() => { anotherMethod(); }); } </pra> <p><br /></p>
P粉170438285P粉170438285430 hari yang lalu692

membalas semua(1)saya akan balas

  • P粉277824378

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

    Promise sendiri tidak menyediakan kaedah untuk menjeda pelaksanaan, tetapi anda boleh menggunakan sintaks async/menunggu untuk mencapai ini. Buat Janji tersuai yang diselesaikan apabila pengguna mengklik butang "Teruskan". Seperti ini:

    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() 
      })
    }
    

    balas
    0
  • Batalbalas