reactjs - Redux saga yield call不等待firebase?
问题描述
我创建了一个 saga 来更新用户信息。但 yield console.log('waiting');
不要等待我的 Fibase 更新完成
export function* handleUpdateUserInfo(action) {
yield put(updateUserInfoPending());
const { userInfo, userID } = action;
const currentUser = yield select(state => state.user.currentUser);
const newUser = {
...currentUser,
...userInfo
};
try {
yield call(() => updateUserProfile(newUser, userID));
yield console.log('waiting');
} catch (error) {
yield put(updateUserInfoFailure(error));
}
}
火力基地
export const updateUserProfile = (newUser, userID) => {
try {
firestore
.collection('users')
.doc(userID)
.set(newUser);
} catch (error) {
throw error;
}
};
我想问一下怎么修?以及为什么会发生
解决方案
如果您从 中返回调用updateUserProfile
,则可以在调用者中等待其结果。
export const updateUserProfile = async (newUser, userID) => {
return firestore
.collection('users')
.doc(userID)
.set(newUser);
};
然后你调用它:
yield call(() => await updateUserProfile(newUser, userID));
yield console.log('waiting');
推荐阅读
- python - 如何计算沿某一维度的 3d 体积的非零元素的平均值
- python-3.x - Python 迭代器和 Pandas groupby:设置起点
- autodesk-forge - Viewer3D 中的属性 dbId:getProperties 与模型衍生端点中的 objectid 不匹配
- python - 有效地找到存储为 PyTorch 张量的两个向量列表的点积并保留反向传播
- scrapy - 通过部分 id 和拆分属性值 Scrapy 查找元素
- ajax - 在 Razor 页面上不显眼的 ajax 发布后更新页面的一部分
- swift - 快速从视频中导出图像序列
- angular - 在角度中使用 setTimeout 函数是否安全?
- amazon-web-services - AWS S3 存储桶:CORS 配置问题(XML 与 JSON)
- php - 如何仅使用语法检查器输出检查 PHP 版本