Вы можете использовать nested, затем block, чтобы передать буквально все, что вы хотите, своему следующему, затем обработчику. Пример:
fetch('flowers.jpg').then(function (response) {
if (response.ok) {
return response.blob()
.then(function (myBlob) {
return {
blob: myBlob
};
});
} else {
return response.json()
.then(function (myJson) {
return {
json: myJson
};
});
}
}).then(function (myData) {
if(myData.blob){
// Handle blob case
}else{
// Handle JSON case
}
}).catch(function (error) {
console.log('There has been a problem with your fetch operation: ', error.message);
});
Возможно, более семантически точный способ обработки этого - отказ при возникновении ошибки.
fetch('flowers.jpg').then(function (response) {
if (response.ok) {
return response.blob();
} else {
return response.json()
.then(function (myJson) {
return Promise.reject(myJson);
});
}
}).then(function (myData) {
// Handle blob case
}).catch(function (error) {
//Handle JSON case
});