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

React Native中TypeScript的sleep方法执行阻塞问题求助

问题原因与解决方案

核心问题:Promise未被resolve

你的sleep函数实现存在错误:在setTimeout的回调中,你只是引用了Promise的resolve函数r,但没有调用它(即r())。这会导致Promise永远处于pending状态,await this.sleep(1000)会一直阻塞,后续代码完全无法执行。

修正后的sleep方法

// 正确写法:调用resolve函数
sleep = (ms: number) => new Promise(r => setTimeout(() => r(), ms));

// 更简洁的等价写法
sleep = (ms: number) => new Promise(r => setTimeout(r, ms));

额外需要修正的代码问题

在getData中直接修改this.state.isLoading = false;是不符合React状态管理规范的——React状态必须通过setState方法修改,直接赋值不会触发组件重新渲染。虽然这不是导致代码卡住的原因,但建议移除该语句,保留最后的setState即可。

修正后的getData方法

getData = async () => {
    this.setState({isLoading: true});
    await this.sleep(1000);
    const res = await getUser("test") ?? new User("", "", "", null, null, 0, 0);
    this.setState({user : res, isLoading: false});
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 07:15:07