如果我错了,请纠正我,但每当我在程序中看到冗余代码块时,我总是认为有更好的方法来思考/设计它。
断章取义:
const ob = new SomeAjaxObject();
ob.on('load', () => {
doSomeThing(ob); //ob needs to be loaded to call this
})
问题是,如果在我绑定(bind) load
事件时 ob
已经加载,doSomething
将永远不会触发。
所以,我的解决方案如下:
const ob = new SomeAjaxObject();
if(!ob.loaded){ //This property is synchronous
ob.on('load', () => {
doSomething(ob);
})
}else{
doSomething(ob);
}
有没有办法可以在没有冗余/重复代码的情况下实现上述目标?
考虑到我无法控制SomeAjaxObject
源代码
最佳答案
我不能肯定地说,因为我不知道 SomeAjaxObject 的作用,但我建议使用您自己的自定义类扩展类并尝试重写 onload 方法。
class CustomAjaxObject extends SomeAjaxObject {
constructor() {
super()
}
onload() {
doSomething()
}
}
使用此方法您可以重写父方法,当然我不能说 SomeAjaxObject
是否使用内部方法 onload
还是仅使用 on('load')
。最好自己尝试一下
如果 SomeAjaxObject
在内部调用 onload
方法,您只需调用自定义类 new CustomAjaxObject()
关于javascript - 如何防止需要等待加载的对象中出现重复代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49414357/