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 */
});