gpt4 book ai didi

javascript - 获取超时 - React Native

转载 作者:行者123 更新时间:2023-11-30 20:52:31 25 4
gpt4 key购买 nike

我正在使用 fetch 从服务器获取数据。如果服务器没有响应,我无法为提取设置超时。

我的全局 fetchData 类

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;
});
}

我正在访问 fetchData 的 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");
});

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

最佳答案

截至目前 (29/12/2017),Fetch 不支持超时选项,但目前正在讨论中 (discussion link) .

但是我们可以根据这些文档定义自己的包装器来实现这一点。 link1 link2

因此在你的情况下

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");
});

关于javascript - 获取超时 - React Native,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48017465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com