【发布时间】:2019-07-29 21:51:58
【问题描述】:
我认为我解决了承诺,代码仍然在说未定义,它没有返回承诺,为什么?
export const SpacesPutImage = (folder, file, id, data, expertId, avatarUrl) => {
console.log(folder, file, id, data, expertId, avatarUrl)
if (avatarUrl === undefined) {
console.log('si')
return new Promise(function(resolve, reject) {
apiCall('put', `/api/experts/${expertId}/spaces`, {
data: data,
size: file.size,
id: id,
folder: folder,
fileType: file.type
})
.then((res) => resolve(res.Location))
.catch(err => reject(err))
})
} else {
console.log('no')
return new Promise(function(resolve, reject) {
apiCall('put', `/api/experts/${expertId}/spaces/${avatarUrl.split("/")[4]}`, {
data: data,
size: file.size,
id: expertId,
folder: folder,
fileType: file.type
}).then((res) => resolve(res.Location))
.catch(err => reject(err))
})
}
}
【问题讨论】:
-
如果可能,请发布真正的错误消息和可能的 apiCall 函数。
-
在
new Promise中包装apiCall()是一种反模式,因为apiCall()本身会返回一个承诺 -
您是否正确地等待返回的承诺? spacePutImage 的结果是否出现错误?
标签: javascript reactjs promise