直接抛问题:
加载资源时,用了async await等待资源加载完成后再执行后面的语句,这几天发现,如果修改系统时间,比如把时间往前调正,然后使用了async await的地方就好像永远挂起了一样,后面的语句不执行了!
引擎用的是2.0.5,语言是typescript,微信小游戏开发,目前测试只会在ios上出现这个问题
,由于初学ts,和cocoscreator,所以不太清楚这块儿到底是语言的问题还是引擎的问题,特发帖请教各位,谢谢!!
直接抛问题:
加载资源时,用了async await等待资源加载完成后再执行后面的语句,这几天发现,如果修改系统时间,比如把时间往前调正,然后使用了async await的地方就好像永远挂起了一样,后面的语句不执行了!
引擎用的是2.0.5,语言是typescript,微信小游戏开发,目前测试只会在ios上出现这个问题
,由于初学ts,和cocoscreator,所以不太清楚这块儿到底是语言的问题还是引擎的问题,特发帖请教各位,谢谢!!
需要贴上代码才能看出具体的问题出在哪里
下面是加载资源的代码
//主动加载资源(Asset 资源) public loadResSync(resPath: string) { return new Promise<any>((resolve, reject) => { cc.loader.loadRes(resPath, (err, resObj) => { if (err != null) { console.error(err + " " + resPath); return; } resolve(resObj); }); }) }
然后调用的地方,简单写下
private async loadARolePrefabSync(cfgId: number, career: Career, name: string): Promise<void> { let rolePrefab: cc.Prefab = null; rolePrefab = await this.loadResSync(`Prefabs/monster/${name}`); this.rolePrefabs.Add(cfgId, rolePrefab); }
通过打印log,发现更改时间后,resolve(resObj)有调用,但是在loadARolePrefabSync函数中,最后一句话没有执行
时间调整为过去的时间会出问题,时间调整为未来的时间没问题
后面用了async await前面就不用写promise了吧,大兄弟,
嗯,是的,前面把loadResSync 改为异步方法确实可以不用写promise,但是现在是往前修改系统时间后,感觉await一直挂着,不继续执行。。。
你的测试角度真的很刁钻啊
玩家搞出来的bug,现在只是封住了,后面要想办法把使用await的地方都去掉
promise有超时机制的,你改时间出现的问题直接忽略了;
改系统时间算是‘作弊’了;
原生平台 不能用async/await ,要怎么办