【发布时间】:2017-03-18 17:00:30
【问题描述】:
我有以下场景:
savePicture(newPicture, fileData){
return compressionUtil.makePictureAndThumbnail(newPicture).then((data) => {
let writeBig = fsUtil.writeFileToDisk(pictureFileName, data[0])
let writeSmall = fsUtil.writeFileToDisk(thumbnailFileName, data[1])
return Promise.all([writeBig, writeSmall]).then(() => {
let picToSave = {
uploaderUsername: fileData.username,
directory: fileDirectory,
fileName: fileName,
tags: fileData.tags,
description: fileData.description,
droneTaken: fileData.droneTaken,
isGenuine: isGenuine,
metadata: metadata
}
return Picture.create(picToSave)
})
})
}
我要做的是像这样处理compressionUtil.makePictureAndThumbnail() 和Promise.all([writeBig, writeSmall]) 可能的承诺拒绝
savePicture(newPicture, fileData){
return compressionUtil.makePictureAndThumbnail(newPicture).then((data) => {
let writeBig = fsUtil.writeFileToDisk(pictureFileName, data[0])
let writeSmall = fsUtil.writeFileToDisk(thumbnailFileName, data[1])
return Promise.all([writeBig, writeSmall]).then(() => {
let picToSave = {
uploaderUsername: fileData.username,
directory: fileDirectory,
fileName: fileName,
tags: fileData.tags,
description: fileData.description,
droneTaken: fileData.droneTaken,
isGenuine: isGenuine,
metadata: metadata
}
return Picture.create(picToSave)
}).catch((err)=>{/*Handle promise.all error here*/})
}).catch((err)=>{/*Handle makePictureAndThumbnail error here*/})
}
但同时让 savePicture() 只返回 Picture.create() 的承诺 .then() 和 .catch()。
我的想法是将它全部包装在一个巨大的 new Promise((resolve,reject)=>{}) 中,但这可能是一种糟糕的做法。
对此表示赞赏。谢谢。
【问题讨论】:
-
您好,您应该尝试提交 MWE (stackoverflow.com/help/mcve) 以使您的问题更容易获得并增加获得答案的机会。
标签: javascript promise es6-promise