javascript - promise.all 渲染两次并返回 undefined
问题描述
大家好,我正在处理一个反应原生项目,我正在离线工作,所以我必须离线存储数据,当互联网恢复时,我必须将用户重定向到屏幕并将数据发送到网络并更改百分比,但我的问题是fetch 渲染两次,并且在所有 promis 之后返回的数据是未定义的,并且通过服务器和数据库中的方式传递到服务器的 fetch 很好地改变了
这是我的功能
export const syncOfflinedata = activities => {
return dispatch => {
Promise.all(
activities.map(item => {
Api()
.put(putEvaluation(item._id), {evaluation: item.evaluation})
.then(data => {
dispatch(setProgressporcentage(1 / activities.length));
})
.catch(err => {
console.log(err.message);
});
}),
)
.then(datafinished => {
console.log('finished', datafinished);
})
.catch(e => {
console.log(e);
});
};
};
解决方案
map 方法应该有 return ,除非它以简短的形式写在一行中:
export const syncOfflinedata = activities => {
return dispatch => {
Promise.all(
activities.map(item => {
return Api()
.put(putEvaluation(item._id), {evaluation: item.evaluation})
.then(data => {
dispatch(setProgressporcentage(1 / activities.length));
})
.catch(err => {
console.log(err.message);
});
}),
)
.then(datafinished => {
console.log('finished', datafinished);
})
.catch(e => {
console.log(e);
});
};
};
推荐阅读
- c# - C# 以编程方式在单元格中添加公式
- javascript - module.exports 不包含默认导出
- windows - MSYS2 无法删除 Windows docker 卷中的文件
- javascript - 功能 id="no-link" 无法正常工作
- excel - 如何使用 VBA 在一个工作簿中动态更新多个 PivotCache?
- wpf - WPF 中的饼图 NuGet 包
- npgsql - Npgsql 错误 - 在 Npgsql 提供程序清单中找不到存储类型“nvarchar(MAX)”
- c++ - 基于数据类型变量选择模板实现的优雅方式
- qt - Qt - 使用单击事件启动进程并使用第二个单击事件再次停止它
- javascript - 退格键不会删除输入字段中的字母?