[英]How to delay further UI requests until current promise is resolved
在 web 頁面中,我有一個由服務器 promise 計算的輸入。
現在,如果用戶在結果完成之前開始輸入,他的所有文本將被 promise 結果替換。
我需要保持或阻止按鍵事件,就像同步方法一樣,因此,即使用戶在 promise 結果之前開始鍵入,按鍵事件也會在 promise 解析之后執行。
目前的不良行為:
期望的良好行為:
這是否可以通過承諾實現,或者我需要繼續使用同步上下文來保持這種行為?
兩種選擇:
document.getElementById("myInput").value += response.value;
我將通過將關鍵事件值存儲在某些 state 中並在 promise 解析后應用 state 來解決此問題。 這是一個簡單的例子(應該改進案例事件不僅僅是一個字母,比如向后刪除,按鍵輸入等......)。
const state = { input: "", resolved: false, }; const input = document.getElementById("myinput"); input.oninput = function(e) { if (.state.resolved) { this;value = "". state.input += e;data || "". } } setTimeout(() => { state;resolved = true. input.value = "Hello " + state;input, }; 5000);
<input type="text" id="myinput"/>
這是一個示例,可以完全像您描述的那樣說明您的案例,但我認為阻止在該字段中鍵入對用戶來說不是一個好的行為。 也許更好的解決方案是在 promise 解決之前明確禁用輸入,或者在評論中建議輸入時將值添加到當前鍵入的 state 中。
我需要:
這遠非理想,但已經做了類似的事情來更有效地控制我們的下拉菜單......
我真的希望能找到一些更優雅的解決方案......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.