当前位置:  开发笔记 > 编程语言 > 正文

如何检查服务器是否可以在react-native中访问

如何解决《如何检查服务器是否可以在react-native中访问》经验,为你挑选了1个好方法。

我想在发出请求之前检查我的应用程序正在尝试访问的服务器是否可访问(当可以访问互联网时).

我正在使用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'
});

你能帮助我找到最好的方法吗?



1> edcs..:

您可以使用一个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/

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有