【发布时间】:2021-06-20 00:29:00
【问题描述】:
我有一个返回承诺的 redux 操作函数。在该函数体内,还有另一个异步函数,它在完成调用时返回一个回调。然后我在另一个地方调用这个函数,用.then()链接它,但是当在浏览器中用断点调试它时,promise函数存在于前两行代码之后
return new Promise((resolve, reject) => {
return (dispatch, getState) => {
是因为第二个return语句吗?这是react/redux 代码,所以我必须为我的异步 Thunk redux 操作提供第二个返回语句。我怎样才能做到这一点?这样我就可以在另一个 redux 操作中调用它并使用 handleProfileImageUploadToS3().then(() => {...}) 链接它?
完整的函数体:
export const handleProfileImageUploadToS3 = () => {
return new Promise((resolve, reject) => {
return (dispatch, getState) => {
const settingsState = getState().BusinessSettings
const userState = getState().User
const imageUpload = true
if (!settingsState.get('logoImage') || settingsState.get('logoImage') === null) {
reject('no image selected')
return
}
Utilities.uploadFileToS3(
imageUpload,
settingsState.get('logoImage'),
'apiurl',
`profiles/${userState.get('id')}`,
(error, url) => {
if (error) {
dispatch(uploadProfileSettingsImageError(error))
return
}
dispatch(updateProfileImageUrlAfterUpload(url))
resolve(url)
}
)
}
})
}
【问题讨论】:
标签: javascript reactjs redux es6-promise redux-thunk