如何从异步自执行函数访问全局 window 变量
How to reach global window variables from async self executing functions
如何从异步自执行函数的内部设置 window 变量。当我在 fetch 之前使用 await 时,我得到“错误:未捕获的 ReferenceError:未定义栏”。当我删除 await 时,在这种情况下,我得到了 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;
还没有被调用。
如果您需要在函数之外使用您的提取结果,请删除 await
关键字,并且在您需要使用结果的任何地方等待承诺完成,例如记录它:bar.then(data => console.log(data))
如何从异步自执行函数的内部设置 window 变量。当我在 fetch 之前使用 await 时,我得到“错误:未捕获的 ReferenceError:未定义栏”。当我删除 await 时,在这种情况下,我得到了 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;
还没有被调用。
如果您需要在函数之外使用您的提取结果,请删除 await
关键字,并且在您需要使用结果的任何地方等待承诺完成,例如记录它:bar.then(data => console.log(data))