javascript - 如何从异步自执行函数访问全局窗口变量
问题描述
如何从异步自执行函数的内侧设置窗口变量。当我在 fetch 之前使用 await 时,我得到“错误:未捕获的 ReferenceError:bar 未定义”。当我删除等待时,在这种情况下,我得到了 Promise 对象。
(async function (w){
bar = await fetch('https://jsonplaceholder.typicode.com/posts').then(()=>{
response.json()
}).then((data)=>{
return data
});
w.bar=bar;
})(window);
console.log(bar);
解决方案
在error: Uncaught ReferenceError: bar is not defined
您尝试登录时正在抛出bar
console.log(bar);
这是行不通的,因为您正在等待使用await
关键字完成提取,因此当此行console.log(bar);
到达您的变量时bar
不会被拒绝,因为fetch()
尚未完成并且尚未w.bar=bar;
调用此行。
如果您需要在函数之外使用 fetch 的结果,请删除await
关键字,然后在任何需要使用结果的地方等待 promise 完成,例如记录它:bar.then(data => console.log(data))
推荐阅读
- python - scikit learn什么版本兼容0.20.3
- vuejs3 - Vue3在构建后在img上得到404,但在服务上工作
- html - Rails 未经允许的参数仍在保存对象
- android - android studios 中的 Anko toast - 未解决的参考。以下候选人均不适用
- javascript - 在匿名函数 .on 中使用变量
- javascript - JavaScript Array 删除数组中的开始引号和结束引号
- c# - 从访问 C# 表单绑定 DateTime
- matplotlib - 如何在 Python matplotlib.pyplot 中更改异常点符号
- jestjs - 检查 Playwright 和 Jest 中的浏览器控制台消息和响应状态代码
- python - 在 Python 中连接数千个数据帧的最有效方法是什么?