首页 > 解决方案 > React Native - 承诺返回未定义

问题描述

我有一个 js 文件,它返回我是否有互联网连接,然后在另一个 js 中,我有一个 if else 语句来获取该值。事情是我得到连接=未定义。

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 
} 

标签: javascriptreactjsreact-native

解决方案


您的 isConnected 函数不是一个承诺。如果你想使用 async/await,isConnected 必须是一个 promise。

尝试这个:

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

推荐阅读