作者:手机用户2602926791 | 来源:互联网 | 2023-01-28 10:28
我发现我无法调用async
函数$.proxy
.我的情况是我代理了事件监听器,以便它们仍然具有相同的上下文,但是一旦我尝试代理一个async
函数,它就没有被调用 - 而且,没有抛出任何错误.
任何人都可以解释为什么这不起作用?
下面的简单示例将允许您重现该问题.当async
关键字存在时,将不会调用该函数.当你删除时async
,它将开始工作.
$('div').on('click', $.proxy(example, this));
async function example() {
console.log('test');
}
Estus Flask..
5
$.proxy
很多年前很棒.async/await是ES2017,我们已经有了 bind
ES5:
$('div').on('click', example.bind(this));
所以我们有异步箭头:
const example = async () => {
console.log('test');
}
$.proxy
使用自定义$.isFunction
检查而不是普通typeof fn === 'function'
检查.这导致本机异步函数的错误否定(转换为异步与本机异步).这是因为本机异步函数是实例AsyncFunction
,而不是Function
直接实例.
这是为什么jQuery不应该只是因为它可以使用的另一个原因.当没有本地替代品或者它们是片状的时候,jQuery辅助函数是不可或缺的 - 但现在不再存在了.
1> Estus Flask..:
$.proxy
很多年前很棒.async/await是ES2017,我们已经有了 bind
ES5:
$('div').on('click', example.bind(this));
所以我们有异步箭头:
const example = async () => {
console.log('test');
}
$.proxy
使用自定义$.isFunction
检查而不是普通typeof fn === 'function'
检查.这导致本机异步函数的错误否定(转换为异步与本机异步).这是因为本机异步函数是实例AsyncFunction
,而不是Function
直接实例.
这是为什么jQuery不应该只是因为它可以使用的另一个原因.当没有本地替代品或者它们是片状的时候,jQuery辅助函数是不可或缺的 - 但现在不再存在了.