You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript Wordle克隆:API取词后页面刷新时机问题求助

确保API取词完成后再刷新页面的解决方案

你的核心问题是runOncePerDay里的异步API请求还没完成,同步代码就触发了页面刷新,导致新单词没来得及存入localStorage。以下是可靠的修复方案:

改造runOncePerDay为异步函数

把函数改成async,用await等待API请求结束后再执行后续操作和刷新:

async function runOncePerDay() {
    if (!hasOneDayPassed()) return false;

    // 等待API返回新单词
    const newWord = await fetchWordJSON();
    localStorage.setItem("wor", newWord);

    // 所有依赖新单词的逻辑放在这里
    localStorage.setItem("Won", "false");
    const wordle = newWord.toUpperCase();
    console.log("WordUPSCALE  ", wordle);
    checkLastWinDates();
    localStorage.setItem("gamePlayed", "false");

    // 最后执行刷新
    location.reload();
}

原代码的问题点

  • fetchWordJSON().then(...)是异步任务,会在后续事件循环执行,但后面的location.reload()是同步执行的,完全不等API返回。
  • then里的word;是无效代码,没有实际作用。
  • API请求完成前就读取localStorage.getItem("wor"),拿到的是旧单词或者undefined。

额外建议

  • 调用runOncePerDay时记得捕获可能的API错误,比如:
    // 页面加载时调用
    runOncePerDay().catch(err => {
        console.error("获取新单词失败:", err);
        // 可以在这里添加降级逻辑,比如使用本地备用单词
    });
    
  • 可以在API请求过程中显示加载提示,提升用户体验。

内容的提问来源于stack exchange,提问作者David T Laszlo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 13:43:04