所以我读完这个错误后,显然缺少分号了吗? 但我根本不知道确切的位置:
<script>
(() => {
fetch('/testmode')
.then(response => {
return response.json();
}).then(body => {
console.log('testmode:', body);
if (body) {
document.querySelector("link[rel='shortcut icon']").href = "favicon.test.ico";
} else {
document.querySelector("link[rel='shortcut icon']").href = "favicon.ico";
};
});
})().catch(err => {
console.log(err);
});
</script>
我已经将分号几乎放到了所有地方,以查找可能丢失的地方,但我将无法使用。
知道我在这里缺少什么吗?有趣的是,当我编写async()时...该错误消失了,但是我不能使用async,因为并非所有浏览器都支持它。
谢谢
答案 0 :(得分:1)
不,没有分号。您刚刚将catch
调用放错了位置,它应该直接放在promise链上:
fetch('/testmode').then(response => {
return response.json();
}).then(body => {
console.log('testmode:', body);
document.querySelector("link[rel='shortcut icon']").href = body
? "favicon.test.ico"
: "favicon.ico";
}).catch(err => {
console.log(err);
});
您甚至不需要在这里使用IIFE-没有要保护的局部变量。如果您仍然想使用一个,则将整个包装起来:
(() => {
fetch('/testmode').then(response => {
return response.json();
}).then(body => {
console.log('testmode:', body);
document.querySelector("link[rel='shortcut icon']").href = body
? "favicon.test.ico"
: "favicon.ico";
}).catch(err => {
console.log(err);
});
})();
或返回中间值:
(() => {
return fetch('/testmode').then(response => {
//^^^^^^
return response.json();
}).then(body => {
console.log('testmode:', body);
document.querySelector("link[rel='shortcut icon']").href = body
? "favicon.test.ico"
: "favicon.ico";
});
})().catch(err => {
console.log(err);
});