typescript-plus icon indicating copy to clipboard operation
typescript-plus copied to clipboard

继承关系中的依赖处理

Open saintEvol opened this issue 5 years ago • 4 comments

感谢如此迅速的修复 #14 问题。原本我也认为这个问题可能非常难处理。 今天上午又做了些测试,发现了下面的问题。 因为此次的测试涉及的代码较多,所以此次直接上传了完整的工程,如果此工程不太方便你确认问题,请随时联系,我好想办法构建更简单的用例。 image image image image image 附件中为完整代码,如果需要我提供更直观的测试代码,请随时告知。 另:请在有空的时候处理下此问题就好了,我这边目前还未正式使用此编译器,所有不是特别紧急。 RiggerIOC.zip

saintEvol avatar Oct 30 '18 03:10 saintEvol

谢谢你这么细致的描述,基本可以确认问题出在用函数返回一个类再立即实例化的语句,之前处理了用函数返回一个匿名函数再立即执行的情况,跟这个是类似的。这些利用动态语言特性来调用,又在加载JS过程中立即执行的写法,在之前测试过的项目里出现的比较少,所以覆盖的不够全。

这里其实如果不是加载JS的过程中立即就实例化GameMain,而是等待一下监听页面初始化事件里new GameMain,可以避免低调绝大部分的加载依赖问题。剩下的静态变量继承,以及部分全局变量函数的执行都可以很好的兼容了。

不过难得遇到这么全的实际案例,我会尽可能都解决掉的。这个预计本周末有时间的时候再来解决一下。

domchen avatar Oct 30 '18 09:10 domchen

感谢你的建议,我会尝试下你说的方法,如果能够凑效,我倒觉得这也会是是个非常好的思路。

saintEvol avatar Oct 30 '18 09:10 saintEvol

是这样的,一般游戏主程序启动大多是在所有JS加载完成后才运行,延迟一下监听页面load结束开始实例化就好了,你现在的写法是一边加载JS一边立即运行整个程序,相当于人为引入了一大堆排序依赖,如果遇到了逻辑上的循环引用就很难绕过去了。确实会存在A引用B,B再引用A的情况的,但是只要不发生在加载JS的过程中,这个其实是合法的。

domchen avatar Oct 31 '18 03:10 domchen

今天试了下,通过将 "new GameMain()"单独拿出来放入index.html最后面,整个测试程序可以跑通了

saintEvol avatar Nov 01 '18 01:11 saintEvol