[英]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.