Javascript 无法在react本机应用程序上获取获取响应
我被困在一个神秘的问题上。问题是这样的: 我做什么?? 只需进行登录api调用,如果登录成功,那么我必须从5-6个api调用中获取大量数据,并将它们存储在本地数据库(领域)中。这是我的密码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
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