首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >以HTML/JavaScript格式保存会导致极大的延迟并且无法工作

以HTML/JavaScript格式保存会导致极大的延迟并且无法工作
EN

Stack Overflow用户
提问于 2021-06-17 01:05:02
回答 1查看 23关注 0票数 1

最近我一直在编写一个点击器游戏,我的代码遇到了一个问题。问题是,当游戏被保存(每五分钟有一个自动保存功能),并重新加载游戏时,它应该节省您购买的硬币和升级的数量。但是,它不会保存,Firefox会显示一个"This page is slowing your browser“。给我的信息。我尝试使用Chrome,但收到页面无响应消息。

我使用本地存储将数据存储到用户的计算机上。但是,由于没有向控制台抛出错误,所以我不能确切地确定可能会发生什么。有人知道怎么解决这个问题吗?

下面是save.js文件:

代码语言:javascript
运行
复制
const local = window.localStorage;

class Save {
    constructor () {
        this._last_props = {"total-coins":0,"total-achi":0,"lifeclicks":0,"lifecoins":0,"lifeautoclicks":0};
    }
    __reset_everything () {
        this.populate();
        this.__init_lifetime();
        this.load();
    }
    __init_lifetime () {
        local.setItem("lifeclicks","0");
        local.setItem("lifecoins","0");
        local.setItem("lifeautoclicks","0");
    }
    populate () {
        local.setItem("total-coins","0");
        local.setItem("achievements","");
        local.setItem("bought","");
        local.setItem("pastry-level","0");
        local.setItem("cps","0");
        local.setItem("mcm","1");
    }
    load () {
        player_coins = Number(local.getItem("total-coins"));
        this._last_props["total-coins"] = player_coins;
        cps = Number(local.getItem("cps"));
        this._last_props["cps"] = cps;
        mcm = Number(local.getItem("mcm"));
        this._last_props["mcm"] = mcm;
        lifetimeclicks = Number(local.getItem("lifeclicks"));
        this._last_props["lifeclicks"] = lifetimeclicks;
        lifetimecoins = Number(local.getItem("lifecoins"));
        this._last_props["lifecoins"] = lifetimecoins;
        lifeautoclicks = Number(local.getItem("lifeautoclicks"));
        this._last_props["lifeautoclicks"] = lifeautoclicks;
        const achi_names = local.getItem("achievements").split("|");
        if (achi_names[0].length > 0) {
            achievementManager._load_achi(achi_names);
        }
        this._last_props["total-achi"] = achievementManager._completed_achievements.length;
    }
    save () {
        if (player_coins !== this._last_props["total-coins"]) {
            this._last_props["total-coins"] = player_coins;
            local.setItem("total-coins",player_coins.toString());
        }
        if (lifetimeclicks !== this._last_props["lifeclicks"]) {
            this._last_props["lifeclicks"] = lifetimeclicks;
            local.setItem("lifeclicks",lifetimeclicks.toString());
        }
        if (lifetimecoins !== this._last_props["lifecoins"]) {
            this._last_props["lifecoins"] = lifetimecoins;
            local.setItem("lifecoins",lifetimecoins.toString());
        }
        if (lifeautoclicks !== this._last_props["lifeautoclicks"]) {
            this._last_props["lifeautoclicks"] = lifeautoclicks;
            local.setItem("lifeautoclicks",lifeautoclicks.toString());
        }
        if (cps !== this._last_props["cps"]) {
            this._last_props["cps"] = cps;
            local.setItem("cps",cps.toString());
        }
        if (mcm !== this._last_props["mcm"]) {
            this._last_props["mcm"] = mcm;
            local.setItem("mcm",mcm.toString());
        }
        const al = achievementManager._completed_achievements;
        if (al.length !== this._last_props["total-achi"]) {
            this._last_props["total-achi"] = al.length;
            let cln = [];
            for (let i = 0; i < al.length; i ++) {
                cln.push(al[i][1]);
            }
            local.setItem("achievements",cln.join("|"));
        }
    }
}

const save = new Save();

if (local.getItem("total-coins") === null && false) {
    save.populate();
    save.__init_lifetime();
} else {
    save.load();
}

function savegame () {
    save.save();
    document.getElementById("auto-save-icon").className = "";
    execAfterDelay(function(){document.getElementById("auto-save-icon").className="auto-save-icon-class"});
}

let repeat_save_id = self.setInterval(savegame,600000);

function game_full_reset () {
    switch_tab(0);
    save.__reset_everything();
}
EN

回答 1

Stack Overflow用户

发布于 2021-06-17 01:44:58

Clement Cartier在一条评论中修复了这个问题,告诉我save()是在无限循环中调用的。谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68007212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档