简体   繁体   English

React Native - Promise 返回未定义

[英]React Native - Promise returns undefined

I have a js file that returns whether I have internet connection or not, and then in another js I have an if else statement that gets that value.我有一个 js 文件,它返回我是否有互联网连接,然后在另一个 js 中我有一个 if else 语句来获取该值。 The thing is im getting connection = undefined.事情是我得到连接 = 未定义。

import React from 'react';
import NetInfo from "@react-native-community/netinfo";

const isConnected = function() {
  NetInfo.fetch().then(state => {
    console.log("state.isConnected: ", state.isConnected)
    return state.isConnected
  });
}

export default isConnected;
import isConnected from '../../src/utils/internetConnection';

async checking(){
   var connection = await isConnected()
   console.log("connection : ", connection)
   if (connection){
      return true
   }

   Alert.alert("There is no Internet connection")
   return 
} 

Your isConnected function is not a promise.您的 isConnected 功能不是承诺。 If you wish to use async/await, isConnected must be a promise.如果你想使用 async/await,isConnected 必须是一个 promise。

Try this:尝试这个:

const isConnected = function() {
  return new Promise((resolve, reject) => {
    NetInfo.fetch().then(state => {
      console.log("state.isConnected: ", state.isConnected)
      resolve(state.isConnected);
    })
    .catch(err => {
      reject(err)
    })
  })
}

try this instead试试这个

export const isConnected = async function () {
    var networkState = await NetInfo.fetch()
    return networkState.isConnected
}

I am not 100% sure on this, but it could be as simple as我对此不是 100% 确定,但它可能很简单

 const isConnected = function() { return NetInfo.fetch().then(state => { console.log("state.isConnected: ", state.isConnected) return state.isConnected }); }

Because you didn't return anything in isConnected function.因为您没有在 isConnected 函数中返回任何内容。 let's try this code:让我们试试这个代码:

const isConnected = async function() {
  const { isConnected } = await NetInfo.fetch()

  return isConnected;
}
async checking(){
  var connection = await isConnected()

  return Boolean(connection)
} 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM