Heim  >  Fragen und Antworten  >  Hauptteil

Problem mit location.reload – Stapelüberlauf

start.onclick=function newGame(){
    location.reload();
    flag = selectModel[0];
    console.log(flag);
};

Ursprünglich wollte ich die Seite aktualisieren und nach dem Klicken das globale Variablen-Flag zuweisen. Erfolgreich aktualisiert, der Wert konnte jedoch nicht erfolgreich zugewiesen werden. Wenn location.reload auskommentiert ist, kann der Wert zugewiesen werden.

Ist location.reload() asynchron? Wenn der Wert zugewiesen wird, wird die Aktualisierung noch nicht ausgeführt, aber der Aktualisierungsvorgang wird ausgeführt, nachdem die Zuweisung abgeschlossen ist.

给我你的怀抱给我你的怀抱2713 Tage vor1197

Antworte allen(3)Ich werde antworten

  • 習慣沉默

    習慣沉默2017-05-18 10:53:54

    你先了解一下 javascript 在浏览器中的生命周期。

    重载页面后,进入下一个生命周期,上一个周期里赋值的flag,即使赋值成功,也被销毁掉了。

    页面刷新,相当于丢掉一切重来,和重新打开页面无二。

    什么奇葩需求会要求点击链接刷新后还要修改全局下的flag?

    Antwort
    0
  • 怪我咯

    怪我咯2017-05-18 10:53:54

    可以把这个flag存到localdtorage

    Antwort
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-18 10:53:54

    应该是同步才对,所以好一点的方式可以考虑这样:

    start.onclick=function newGame(){
        flag = selectModel[0];
        console.log(flag);
        setTimeout(() => {
            location.reload();
        });
    };

    Antwort
    0
  • StornierenAntwort