如何在Promise鏈中等待按鈕點擊來暫停執行?
P粉170438285
2023-08-15 13:06:43
<p>我正在嘗試連結一些後端呼叫來處理文件,但整個工作流程需要使用者在中途提供一些輸入。我不確定如何暫停執行,直到用戶點擊一個按鈕“<code>繼續</code>”後才能繼續工作。 </p>
<p>所以流程如下:</p>
<ol>
<li>使用者選擇一個文件,觸發上傳一些資料的事件。 </li>
<li>我從上一個呼叫中獲取回應,打開一個帶有表單的模態框。我需要在這裡暫停。 </li>
<li>填寫表單,點選「<code>繼續</code>」按鈕繼續 promise 連結。 </li>
<li>觸發另一個調用,將更多資訊提交到另一個端點。 </li>
</ol>
<p>所以這些步驟中的每一步都涉及到一個 HTTP 請求,使用 <code>axios</code>,但我很難理解如何連結這些 promises。 </p>
<p>現在有類似以下的程式碼:</p>
<pre class="brush:js;toolbar:false;">onFileSelected(event) {
// 這裡的程式碼
axios
.post("")
.then((res) => {
// 在這裡我需要打開模態框,並等待按鈕點擊
})
.then(() => {
anotherMethod();
});
}
</pre>
<p><br /></p>
Promise本身並沒有提供暫停執行的方法,但你可以使用async/await語法來實現。建立一個自訂的Promise,在使用者點擊"Continue"按鈕時解析。就像這樣: