问题描述
如何从异步自执行函数的内部设置窗口变量。当我在 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
不存在,因为 {{1 }} 还没有完成,这行 fetch()
还没有被调用。
如果您需要在函数外使用 fetch 的结果,请删除 w.bar=bar;
关键字,并在需要使用结果的任何地方等待 promise 完成,例如记录它:{{1 }}