我有以下JavaScript代码:
async function awaitFetch(urlString) {
try {
let status = await fetch(urlString);
return status;
} catch(e) {
alert(e);
}
}
let response = null;
let url = 'https://stackoverflow.com';
awaitFetch(url).then(function (resolve) { response = resolve.status });
while (response === null) {};
console.log(response);
while循环永远运行,我发现response
永远不会从null更改,因为promise永远不会解决。为什么我的代码会这样?我希望当异步代码将response
变成200
或您拥有什么(null
之外的东西)时,循环将停止执行,但是那永远不会发生。循环永远执行,而我的console.log()
从未运行。为什么会这样?
我真正想做的就是暂停执行,直到response
是实际的响应,然后将其记录下来。我也有约束,无法将console.log()
放在.then()
内。如果事件循环被我的while循环阻塞,那么我可以暂停执行直到response
更新而无需将console.log()
放入async
函数或.then()
中的方式??