簡體   English   中英

如何檢查服務器是否可以在react-native中訪問

[英]How to check if server is reachable in react-native

我想在發出請求之前檢查我的應用程序正在嘗試訪問的服務器是否可訪問(當可以訪問互聯網時)。

我正在使用Fetch API,現在我正在使用功能超時,但是我的問題是有什么方法可以檢查服務器是否可以訪問。

我嘗試使用all-reacheable npm包並添加了以下代碼,但我沒有得到任何回調響應。

isReachable([
    'http://aposddasd.com',
    'http://google.com'
], (err, reachable, host) => {
  console.log('Server is' + reachable); //=> false
  console.log('App log' +  host); //=> 'http://aposddasd.com'
});

你能幫助我找到最好的方法嗎?

您可以使用Promise.race() ,它將返回解決或拒絕的第一個承諾 - 實際上它們非常棒! 在這里查看文檔:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise/race

這是一個簡單的函數,在3ms后超時 - 它使用httpbin來模擬5s的延遲:

const isAvailable = () => {
    const timeout = new Promise((resolve, reject) => {
        setTimeout(reject, 300, 'Request timed out');
    });

    const request = fetch('https://httpbin.org/delay/5');

    return Promise
        .race([timeout, request])
        .then(response => alert('It worked :)'))
        .catch(error => alert('It timed out :('));
}

isAvailable();

在這里查看小提琴: https//jsfiddle.net/edcs/8Lcg8a8j/10/

我擔心是否有任何功能。 但是你可以將Fetch API放在一個javascript setTimeout()中,例如20秒。 如果你沒有得到20秒的結果,可能無法訪問服務器。

setTimeout({ this.FetchData(); }, 20000);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM