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

异步函数中sleep未定义?记忆游戏延迟翻牌功能报错

解决记忆游戏中sleep is not defined的报错问题

嘿,我来帮你搞定这个问题!咱们一步步来分析:

为什么会报错?

首先,JavaScript没有原生的sleep()函数,所以如果你只是直接写await sleep(2000)但没正确定义这个函数,或者定义的方式不对,就会触发这个错误。你说把sleep定义在flip内部,但大概率是这两个原因之一:

  • 你的sleep函数没有返回一个Promise(await只能等待Promise对象或者异步函数);
  • sleep的定义位置有问题,比如放在了某个条件分支里,导致调用它的时候这个函数还没被定义。

正确的实现方式

这里给你两种靠谱的解决方案,选哪种都行:

方案1:在flip内部定义标准的sleep函数

确保sleep返回一个Promise,这样await才能正常工作:

async function flip() {
  // 先定义符合要求的sleep函数
  const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));

  // 你的卡片翻转逻辑代码
  // 比如:card.classList.add('flipped');

  // 等待2秒后执行后续逻辑
  await sleep(2000);

  // 翻回卡片的逻辑
  // 比如:card.classList.remove('flipped');
}

方案2:直接使用Promise,不用单独定义sleep

如果不想额外写sleep函数,也可以直接把setTimeout包装成Promise用await等待:

async function flip() {
  // 你的卡片翻转逻辑代码

  // 直接等待2秒
  await new Promise(resolve => setTimeout(resolve, 2000));

  // 翻回卡片的逻辑
}

额外注意点

如果你之前把sleep放在了条件分支里(比如if语句块内),那当条件不满足时,sleep就不在当前作用域里,调用时就会报错。一定要确保sleep的定义在调用它的代码之前,且处于同一个作用域哦!

内容的提问来源于stack exchange,提问作者ak39464

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:03:36