Javascript 只返回最内心的承诺';让我们抓住并处理别人
我有以下情况:Javascript 只返回最内心的承诺';让我们抓住并处理别人,javascript,promise,es6-promise,Javascript,Promise,Es6 Promise,我有以下情况: savePicture(newPicture, fileData){ return compressionUtil.makePictureAndThumbnail(newPicture).then((data) => { let writeBig = fsUtil.writeFileToDisk(pictureFileName, data[0]) let writeSmall = fsUtil.writeFileToDisk(thum
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()
的promise.then()和.catch()
我想到的是用一个巨大的新承诺(决心,拒绝)=>{}来包装这一切,但这可能是一个糟糕的做法
在此方面的投入是值得赞赏的。谢谢
用一个巨大的新承诺((决心,拒绝)=>{})来包装这一切可能是一种可怕的做法
对!
要仅处理来自承诺而非然后履行回调的拒绝,您可以:
同样地
return Promise.all([writeBig, writeSmall]).then(() => {
let picToSave = { … }
return Picture.create(picToSave);
}).catch(err => {
/* Handle all errors from writeBig, writeSmall and create */
});
用一个巨大的新承诺((决心,拒绝)=>{})来包装这一切可能是一种可怕的做法
对!
要仅处理来自承诺而非然后履行回调的拒绝,您可以:
同样地
return Promise.all([writeBig, writeSmall]).then(() => {
let picToSave = { … }
return Picture.create(picToSave);
}).catch(err => {
/* Handle all errors from writeBig, writeSmall and create */
});
您好,您应该尝试展示MWE(),使您的问题更容易理解,并增加您获得答案的机会。您好,您应该尝试展示MWE(),使您的问题更容易理解,并增加您获得答案的机会。
return Promise.all([writeBig, writeSmall]).then(() => {
let picToSave = { … }
return Picture.create(picToSave).catch(err => {
/* Handle errors from create */
});
}, err => {
/* Handle all errors from writeBig and writeSmall */
});