Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何重构此代码以消除重复?_Javascript_Refactoring - Fatal编程技术网

Javascript 如何重构此代码以消除重复?

Javascript 如何重构此代码以消除重复?,javascript,refactoring,Javascript,Refactoring,出于对枯燥(不要重复)代码的兴趣,我想知道下面给出的代码是否可以以任何方式进行重构。在下面的代码中,您可以看到,我重复了condition1和condition2的赋值语句,因为在每个if语句的末尾,我进行了不同的函数调用 websocket.onmessage = async(event) => { const data = JSON.parse(data) let infoFromExternalApi1, infoFromExternalApi2, infoFromE

出于对枯燥(不要重复)代码的兴趣,我想知道下面给出的代码是否可以以任何方式进行重构。在下面的代码中,您可以看到,我重复了
condition1
condition2
的赋值语句,因为在每个if语句的末尾,我进行了不同的函数调用

websocket.onmessage = async(event) => {
    const data = JSON.parse(data)
    let infoFromExternalApi1, infoFromExternalApi2, infoFromExternalApi3

    // Assignments for infoFromExternalApi variables are repeated due to difference in function calls doSomething() and doSomethingElse()
    if (condition1) {
        infoFromExternalApi1 = await getInfoFromExternalApi1()
        infoFromExternalApi2 = await getInfoFromExternalApi2()
        infoFromExternalApi3 = await getInfoFromExternalApi3()

        doSomething()
    }

    if (condition2) {
        infoFromExternalApi1 = await getInfoFromExternalApi1()
        infoFromExternalApi2 = await getInfoFromExternalApi2()
        infoFromExternalApi3 = await getInfoFromExternalApi3()

        doSomethingElse()
    }
}

你可能在找

websocket.onmessage = async(event) => {
    const data = JSON.parse(data)
    let infoFromExternalApi1, infoFromExternalApi2, infoFromExternalApi3

    if (condition1 || condition2) {
        infoFromExternalApi1 = await getInfoFromExternalApi1()
        infoFromExternalApi2 = await getInfoFromExternalApi2()
        infoFromExternalApi3 = await getInfoFromExternalApi3()
    }
    if (condition1) {
        doSomething()
    }
    if (condition2) {
        doSomethingElse()
    }
}

当然,如果这两个条件都为真,那么这与您的原始代码的工作方式不同,即仅从外部API获取一次信息。

如果只对doSomething和doSomethingElse使用if语句,又如何?您在哪里使用
infoFromExternalApiN
变量?你能发布你的实际代码吗?