[英]Javascript: element onchange event async/await callback
我希望这个问题不要重复。 我有两个 HTML 元素,其中一个元素在更改时必须通过名为foo()
的异步方法填充另一个元素的值。
以下代码有效:
<input type="text" id="elem">
<input type="file" onchange="
(async ()=>{
document.getElementById('elem').value = await foo(this);
})()
">
以下没有(控制台中没有抛出异常,并且#elem
没有更新):
<input type="text" id="elem">
<input type="file" onchange="
async ()=>{
document.getElementById('elem').value = await foo(this);
}
">
为什么第一个示例有效而第二个示例无效?
(function() {...})()
这会调用 function。 这就像调用一个名为 function someFunction()
在您的第二个示例中,您只是创建了一个 function 而不调用它。 它返回 function 本身。
onchange='someFn()'; // calls function
onchange='someFn'; // returns function.
第一个示例是所谓的自调用 function 。 这就是为什么 is 包裹在 () 中,后跟 () 以立即调用 function。
第二个答案不起作用,因为您实际上并没有调用它。 只需添加“const myFunc = async () => {}”并在按钮单击时调用“myFunc”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.