账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    我想把getData(start)中的使用多个 if 这里优化一下,请问如何处理?
    28
    0
    async getData(start) {
    
            const _self = this;
            var response = [];
            if(start == 0){
                try {
                    // let response = await fetch('mock-data/selectData01.json').then(function(response) {
                    //     return response.json(); // 第1个
                    // }).then(function(responseThenData) {
                    //     //console.log('responseThenData =',responseThenData);
                    //     return responseThenData // 第2个
                    // }).catch(function(e) {
                    //     console.log("Oops, error");
                    // });
                    response = await fetch('mock-data/selectData01.json').then(function(response) {
                        return response.json();
                    })
                    return response; // 第3个
                } catch(e) {
                    console.log("Oops, error", e);
                }
            } else if (start == 1) {
                try {
                    response = await fetch('mock-data/selectData02.json').then(function(response) {
                        return response.json();
                    })
                    return response; // 第3个
                } catch(e) {
                    console.log("Oops, error", e);
                }
            } else if (start == 2) {
                try {
    
                    response = await fetch('mock-data/selectData03.json').then(function(response) {
                        return response.json();
                    })
                    return response; // 第3个
                } catch(e) {
                    console.log("Oops, error", e);
                }
            } else if (start == 3) {
                try {
    
                    response = await fetch('mock-data/selectData04.json').then(function(response) {
                        return response.json();
                    })
                    return response; // 第3个
                } catch(e) {
                    console.log("Oops, error", e);
                }
            } else if (start == 4) {
                try {
    
                    response = await fetch('mock-data/selectData05.json').then(function(response) {
                        return response.json();
                    })
                    return response; // 第3个
                } catch(e) {
                    console.log("Oops, error", e);
                }
            }
        }
    
        componentDidMount() {
            const _self = this;
            var key = true;
    
    
            let dataReadStart = 0;
    
            _self.getData(dataReadStart)
                .then(function(responseThenData) {
                    //console.log('responseThenData =',responseThenData['dataChinaTelecom']['regionData']);
                    _self.setState({
                        tableBody: responseThenData['dataChinaTelecom']['emergencyTableData'],
                        tableHead: responseThenData['dataChinaTelecom']['emergencyTableHeader']
                    })
                })
                .then(function() {
                    //console.log('abc')
                })
                .catch(function(e) {
                    console.log("promise, error =", e);
                });
    
    
            // var key = true;
            // new Promise(function(resolve, reject){
            //     if(key){
            //         resolve('成功了')
            //     }else{
            //         reject('被拒绝')
            //     }
            // }).then(function(value) {
            //     console.log(value); // key=true 123
            // }, function (rej) {
            //     console.log('---------result reject');
            //     console.log(rej);
            // })
    
            dataReadStart = dataReadStart + 1;
            setInterval(function(){
    
                let dataPromise = _self.getData(dataReadStart);
                console.log('dataPromise =',dataPromise)
                dataPromise
                    .then(function(responseThenData) {
                        //console.log('responseThenData =',responseThenData['dataChinaTelecom']['regionData']);
                        _self.setState({
                            tableBody: responseThenData['dataChinaTelecom']['emergencyTableData'],
                            tableHead: responseThenData['dataChinaTelecom']['emergencyTableHeader']
                        })
                    })
                    .then(function() {
                        //console.log('abc')
                    })
                    .catch(function(e) {
                        console.log("promise, error =", e);
                    });
                if(dataReadStart + 1 == 5){
                    dataReadStart = 0;
                } else {
                    dataReadStart = dataReadStart +1;
                }
    
            },30000)
    
            // ECMAScript 定义了 Undefined、Null、Boolean、String、Number、Object 6种类型
            // 其中 Undefined 和 Null 都是只包含一个值得特殊类型,分别为 undefined 和 null
            // 因此根据定义undefined和null分属不同类型
            // 使用===运算符返回false
            // 当声明的变量未初始化时,该变量的默认值是undefined,而null则用于表示尚未存在的对象
        }
    

    这里if能不能缩简到一个

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 在JavaScript中,你可以使用数组的map()方法和if语句来优化你的代码。map()方法会创建一个新数组,其中的每个元素都是原数组中对应元素的map()方法的结果。if语句会在map()方法的每个结果中执行一个函数。

      以下是一个示例:

      ```javascript var data = [1, 2, 3, 4, 5]; var results = data.map(function(item) { return item === 3 ? "FizzBuzz" : item === 5 ? "Buzz" : item; });

      console.log(results); // 输出: ["FizzBuzz", "Buzz", "FizzBuzz", "Buzz", "FizzBuzz"] ```

      在这个例子中,我们首先使用map()方法将数据转换为一个新数组,其中的每个元素都是原始数组中对应元素的map()方法的结果。然后,我们使用if语句来过滤出数字3和5,分别返回"FizzBuzz"和"Buzz"。最后,我们打印出结果数组。

      这种方法的优点是代码更简洁,更易于理解。然而,它也有一些限制。例如,它不能处理非数字的元素。如果你需要处理这些元素,你可能需要使用其他方法,例如使用for循环。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部