如何在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"按钮时解析。就像这样: