javascript - 如何防止需要等待加载的对象中出现重复代码?

标签 javascript ajax structure

如果我错了,请纠正我,但每当我在程序中看到冗余代码块时,我总是认为有更好的方法来思考/设计它。

断章取义:

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/

相关文章:

javascript - 如何在html中使用onchange显示或不显示表行或表数据

jquery - Rails Ajax,成功回调数据未定义

asp.net - 隐含某种实现的接口(interface)有什么好处?

Angular2 如何清理 AppModule

javascript - 如何在 Javascript 中将数组值或对象复制到另一个变量而不复制其引用?

javascript - 用 jQuery 替换部分页面

Javascript:如何将 on() 方法与each() 一起使用?

javascript - Ajax - 成功返回超过 1 个变量

c - 将 *.data 文件读入动态扩展的结构数组***

c - 为什么要使用带结构的 malloc?