Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在react本机应用程序上获取获取响应_Javascript_Reactjs_React Native_Realm_Fetch - Fatal编程技术网

Javascript 无法在react本机应用程序上获取获取响应

Javascript 无法在react本机应用程序上获取获取响应,javascript,reactjs,react-native,realm,fetch,Javascript,Reactjs,React Native,Realm,Fetch,我被困在一个神秘的问题上。问题是这样的: 我做什么?? 只需进行登录api调用,如果登录成功,那么我必须从5-6个api调用中获取大量数据,并将它们存储在本地数据库(领域)中。这是我的密码 login(email, password) { this.toggleLoadingFunction(true); fetch(LoginURL, { method: 'POST', headers: { Accept: 'application/j

我被困在一个神秘的问题上。问题是这样的:

我做什么?? 只需进行登录api调用,如果登录成功,那么我必须从5-6个api调用中获取大量数据,并将它们存储在本地数据库(领域)中。这是我的密码

login(email, password) {
    this.toggleLoadingFunction(true);

    fetch(LoginURL, {
      method: 'POST',
      headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        email: email,
        password: password,
        request_from: 'mobile'
      }),
    })
      .then(async res => {
        if (res.ok) {
          let data = await res.json();

          global.user = data['user']
          global.token = data['token']

          getAllMasterDataAndSaveInRealm().then(() => {
            this.toggleLoadingFunction(false);
            global.storage.save({ key: 'LoggedInData', data: data });
            this.props.navigation.navigate('Project', data);
          }).catch(() => {
            this.toggleLoadingFunction(false);
            Alert.alert("Master Data Failed !!!");
          })

        } else {
          this.toggleLoadingFunction(false);
          let data = await res.json();
          Alert.alert("Login Failed!!!", data.message)
        }
      })
      .catch(error => {
        this.toggleLoadingFunction(false);
        Alert.alert("Network Error. Please try again.")
      })
这里的getAllMasterDataAndSaveInRealm()位于帮助函数上,该函数调用5-6个API,并在所有工作完成后返回响应。下面是它的样子:

export const getAllMasterDataAndSaveInRealm = () => {
  const token = global.token;
  return new Promise.all([
    getMaterials(token),
    getEquipments(token),
    getObjective(token),

    getCategories(token),
    getNcData(token),
    getPlans(token)]
  );
}
getAllMasterDataAndSaveInRealm()中的每个函数在成功地将数据存储在本地域数据库中后返回Promise。下面是上述函数之一

export const getActivityPlan = (token) => {
  return new Promise((resolve, reject) => {
    return fetch(FetchActivityPlanDataURL, {
      method: 'GET',
      headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
        'access_token': `${token}`
      }
    }).then((response) => {
      console.log("Activity Plans Api response", response);
      return response.json()
    })
      .then((responseJson) => {
        const { data } = responseJson
        console.warn("Activity Plans Api", data);

        global.realm.write(() => {

          for (var item of data) {
            item.id = item.id ? item.id : 0;
            item.activity_id = item.activity_id ? item.activity_id.toString() : "";
            item.activity_name = item.activity_name ? item.activity_name.toString() : "";
            item.activity_cost = item.activity_cost ? item.activity_cost.toString() : "";
            item.project_id = item.project_id ? item.project_id : 0;

            global.realm.create("ActivityPlan", item, true);
          }

        })

        resolve(data);
      })
      .catch((error) => {
        reject(`Activity Plan Failed ${error}`)
      });
  })
}
所有剩余的函数都与上面相同(它们所做的只是从api获取数据并将其存储在领域中,然后解析或拒绝)

我所期望的是: getAllMasterDataAndSaveInRealm()函数只需将所有必需的数据存储在db中,并让我知道所有操作都已完成,然后在登录和获取数据时导航到另一个屏幕

问题: 当我运行应用程序并处理登录时,有时它可以正常工作,但大多数情况下,应用程序都停留在显示加载器上,因为上面的6个api中的一些api调用在wifi上没有收到请求的响应(我会记录响应)但当我使用移动数据和VPN时,它总是有效。

当我在服务器控制台上记录请求时,将发送代码为200的响应,但应用程序无法获取请求的响应

我是新来的。我在网上做了很多搜索,但找不到解决办法。我不知道代码出了什么问题。请帮帮我

项目配置: “反应”:“16.8.6”, “反应本机”:“0.60.4”, “领域”:“^2.29.2”, 节点版本:v9.0.0