[英]jQuery proxy doesn't call async functions
我发现我不能用$.proxy
调用async
函数。 我的情况是我代理了事件监听器,以便它们仍然具有相同的上下文,但是当我尝试代理async
函数时,它就没有被调用 - 而且,没有抛出任何错误。
任何人都可以解释为什么这不起作用?
下面的简单示例将允许您重现该问题。 当async
关键字存在时,将不会调用该函数。 删除async
,它将开始工作。
$('div').on('click', $.proxy(example, this));
async function example() {
console.log('test');
}
$.proxy
很多年前很棒。 async / await是ES2017,我们已经从ES5开始bind
:
$('div').on('click', example.bind(this));
所以我们有异步箭头:
const example = async () => {
console.log('test');
}
$.proxy
使用自定义$.isFunction
检查而不是普通typeof fn === 'function'
检查。 这导致本机异步函数的错误否定( 转换为异步与本机异步 )。 这是因为本机异步函数是AsyncFunction
实例,而不是Function
直接。
这是为什么jQuery不应该只是因为它可以使用的另一个原因。 当没有本地替代品或者它们是片状的时候,jQuery辅助函数是不可或缺的 - 但现在不再存在了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.