And*_*ndy 3 javascript jquery asynchronous
我正在学习ES2017 中引入的异步函数功能,但我似乎无法使以下功能正常工作:
async function sayHelloAsync() {
let {autosave} = await browser.storage.local.get('autosave');
if (autosave) {
$('#helloButton').click();
}
}
$(sayHelloAsync);
Run Code Online (Sandbox Code Playgroud)
我已经在小型应用程序中找到了满足我需求的解决方法,但我想知道为什么这行不通。一旦我删除async,它就会按预期工作。我还有其他自定义事件绑定,它们使用async函数作为回调,并且它们工作得很好。
我在 Linux 上使用 Google Chrome 57。
更新
我更新了代码示例,以消除对加载 DOM 和 jQuery 的需求的困惑。
UPD:正如 Quentin 提到的,这些问题已经得到解决,并且 jQuery 3.6.0(可能还有一些早期版本)可以按预期工作。
我已经检查了jQuery源代码,下面是它执行的检查以找出参数是什么:
isFunction: function( obj ) {
return jQuery.type( obj ) === "function";
}
Run Code Online (Sandbox Code Playgroud)
并且jQuery.type( obj )回报object并不function如预期。这可能是 中的一个错误jQuery,但这就是该函数未执行的原因。
进一步挖掘并jQuery调用toString.call( obj )ti 确定类型并尝试将结果映射到已知类型。它不能,这就是它返回的原因object。
所以这里的问题不是jQuery你的异步函数。
| 归档时间: |
|
| 查看次数: |
3499 次 |
| 最近记录: |