Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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_React Native_Ecmascript 6_Fetch - Fatal编程技术网

Javascript 获取-反应本机超时

Javascript 获取-反应本机超时,javascript,react-native,ecmascript-6,fetch,Javascript,React Native,Ecmascript 6,Fetch,我正在使用fetch从服务器获取数据。在服务器未响应的情况下,我无法设置提取超时 我的全局数据类 fetchGetResp(url, token) { return fetch(url, { method: "GET", headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', } })

我正在使用fetch从服务器获取数据。在服务器未响应的情况下,我无法设置提取超时

我的全局数据类

fetchGetResp(url, token) {
    return fetch(url, {
        method: "GET",
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
        }
    })
    // .then(ApiUtils.checkStatus)
    .then(response =>
        response.json()
    )
    .then(responseJson => {
        return responseJson
    })
    .catch(error => {
        // console.log(error.headers._bodyText.status);
        console.log('touching undefined catch');
        return undefined;
    });
}
访问获取数据的Javascript类

let resp = fetchData.fetchGetResp(restUrl, userToken);
resp.then(responseJson => {
    // console.log(res);
    if (responseJson != '' && responseJson != undefined) {

    }
    else {
        console.log(responseJson);
        try {
        }
        catch (error) {
            alert(error.message);
            console.log(error + 'from js file');
        }
    }

    //Some if statement
    else {
        alert('Unable to Process.please try again');
    }
})
.catch(error => {
    alert(error.message + "Please try again after sometime");
});

请告诉我们如何基于我的上述方法实现超时。

Fetch目前(2017年12月29日)不支持超时选项,但目前正在讨论中

但是有一种方法我们可以根据这些文档定义我们自己的包装器来实现这一点

因此在你的情况下

function timeout(ms, promise) {
    return new Promise(function(resolve, reject) {
        setTimeout(function() {
            reject(new Error("timeout"))
        }, ms);
        promise.then(resolve, reject)
    })
};

timeout(1000, fetchData.fetchGetResp(restUrl, userToken)).then(responseJson => {
    // console.log(res);
    if (responseJson != '' && responseJson != undefined) {

    }else {
        console.log(responseJson);
        try {
        } catch (error) {
            alert(error.message);
            console.log(error + 'from js file');
        }

     }

}).catch(error => {
    alert(error.message + "Please try again after sometime");
});

Fetch目前不支持超时,我建议您使用或