多次获取不起作用React native

时间:2018-03-07 00:31:53

标签: react-native fetch

我正在使用react-native做网络扫描程序,

问题是我的api请求正在运行但不在for循环中, 如果我只用30loop做了一个for循环,那就好了,但是如果我得到超过30loops 没有什么工作。

如果找到的IP是192.168.1.79
并且我将num_two设置为60并将num_one设置为1,这项工作正常 但如果我将num_two设置为50并将num_one设置为1,则此功能不再适用。

我的搜索功能:

searchInNetwork(net) {
    return new Promise(async (resolve, reject) => {
        for (let num_one = 1 ; num_one < 255 ; num_one++) {
            let reseau = net + String(num_one);
            for (let num_two = 50 ; num_two < 255 ; num_two++) {
                let url = 'http://' + reseau + '.' + String(num_two) + ':3000/connect';
                await ApiService.getRequest(url, 100)
                    .then((data) => {
                        console.log("SUCCESS");
                        ApiService.url = 'http://' + reseau + '.' + String(num_two) + ':3000';
                        ApiService.connected = true;
                        resolve();
                    })
`                   .catch((error) => {
                        if (url === "http://192.168.1.79:3000/connect")
                            console.log(error);
                    })
            }
        }
    });
}

我的ApiService类:

class ApiService {
    static url = 'http://0.0.0.0:3000';
    static connected = false;

    static getUrl() {
        return (this.url);
    }

    static getRequest(route, timeout) {
        return new Promise(async (resolve, reject) => {
            fetch(route)
                .then((response) => response.json())
                .then((responseJson) => {
                    ApiService.connected = true;
                    resolve(responseJson);
                })
                .catch((error) => {
                    ApiService.connected = false;
                    reject(error);
                });
            if (timeout) {
                const error = new Error("Timeout net");
                setTimeout(reject, timeout, error);
            }
        });
    };
};

module.exports = ApiService;

0 个答案:

没有答案