Reactjs 使用状态钩子计算承诺的内部

Reactjs 使用状态钩子计算承诺的内部,reactjs,react-native,typeorm,Reactjs,React Native,Typeorm,我带着一个新手问题回来了,最终我用我的承诺构建了一个太复杂的函数,但是也许有人对setSiteAdded/Updated和setArticlesAdded/Updated函数为什么不能以正确的方式为我工作有所了解。我想统计一下,从我的API获取的数据中所有直接保存和更新的元素 我正在我的ios设备和sqlite上本地使用typeORM 这是我的密码: const saveToDB=(类型,元素)=>{ 返回新承诺(异步(解析、拒绝)=>{ 如果(类型=='site'){ 让站点=新站点(); s

我带着一个新手问题回来了,最终我用我的承诺构建了一个太复杂的函数,但是也许有人对setSiteAdded/Updated和setArticlesAdded/Updated函数为什么不能以正确的方式为我工作有所了解。我想统计一下,从我的API获取的数据中所有直接保存和更新的元素

我正在我的ios设备和sqlite上本地使用typeORM

这是我的密码:

const saveToDB=(类型,元素)=>{
返回新承诺(异步(解析、拒绝)=>{
如果(类型=='site'){
让站点=新站点();
site.created=element.created;
site.sitenum=element.sitenum;
site.title=element.title;
site.updated=element.updated;
让siteRepository=getRepository(站点);
findOne({where:{sitenum:site.sitenum}})
。然后((foundSite)=>{
site.id=foundSite.id;
如果(foundSite.updated!==site.updated){
siteRepository.update(foundSite.id,site)
。然后((savedSite)=>{
log(“站点已更新!”,savedSite);
设置站点支持(站点支持+1);
解决(savedSite);
}).catch((错误)=>{
日志(“错误:”,错误);
拒绝();
});
}否则{
解决();
}
})
.catch(()=>{
siteRepository.save(站点)
。然后((savedSite)=>{
log(“站点已保存!”,savedSite);
设置站点加载(站点加载+1);
解决(savedSite);
})
.catch((错误)=>{
日志(“错误:”,错误);
拒绝();
});
});
}else if(类型==='article'){
让文章=新文章();
article.created=element.created;
article.updated=element.updated;
article.artnum=element.artnum;
article.ean=element.ean;
article.title1=element.title1;
article.title2=element.title2;
article.unit=element.unit;
第条价格=要素价格;
article.quantity=element.quantity;
让articleRepository=getRepository(Article);
articleRepository.findOne({where:{artnum:article.artnum}})
.然后((foundArticle)=>{
article.id=foundArticle.id;
if(foundArticle.updated!==article.updated){
articleRepository.update(foundArticle.id,article)
.然后((savedArticle)=>{
log(“文章已更新!”,savedArticle);
setArticlesUpdated(articlesUpdated+1);
解决(savedArticle);
})
.catch((错误)=>{
日志(“错误:”,错误);
拒绝();
});
}否则{
解决();
}
})
.catch(()=>{
articleRepository.save(文章)
.然后((savedArticle)=>{
log(“文章已保存!”,savedArticle);
setArticlesAdded(articlesAdded+1);
解决(savedArticle);
})
.catch((错误)=>{
日志(“错误:”,错误);
拒绝();
});
});
}
})
}
const fetchDataFromServer=()=>{
返回新承诺(异步(解析、拒绝)=>{
设置加载(真);
我保证([
新承诺(异步(解析、拒绝)=>{
试一试{
设计数器=0;
let sites=等待获取(
主机+'sites',{method'GET',头:{token:token}
)
让sitesJson=wait sites.json();
Promise.all(sitesJson.data.map)(异步(元素)=>{
计数器++;
返回saveToDB('site',元素)
}))
.然后(()=>{
设置设置(计数器);
解决();
})
.catch(()=>拒绝());
}捕获(错误){
控制台错误(error);
}
}),
新承诺(异步(解析、拒绝)=>{
试一试{
让物品等待取回(
主机+'articles',{method'GET',头:{token:token}
)
让articlesJson=wait articles.json();
Promise.all(articlesJson.data.map)(异步(元素)=>{
返回saveToDB('article',元素)
}))
。然后(()=>resolve())
.catch(()=>拒绝());
}捕获(错误){
控制台错误(error);
}
})
])
。然后(()=>resolve())
.catch(()=>拒绝())
})
}