微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从异步自执行函数访问全局窗口变量

如何解决如何从异步自执行函数访问全局窗口变量

如何从异步自执行函数的内部设置窗口变量。当我在 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 }}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。