Sono un po 'confuso con come utilizzare correttamente il recupero. Sembra risolversi anche quando ricevo uno stato di errore. Il seguente codice è corretto (avvolgere il recupero in un'altra promessa)?Rifiuta promessa quando si utilizza fetch
function a(url, config) {
if (!config)
config = {};
config = Object.assign(config, {
headers: {
'content-type': 'application/json;charset=utf-8'
}
})
return new Promise(
function(resolve, reject) {
fetch(url, config).then(
function(res) {
if (res.status == 200 && res.ok) {
console.log("Promise resolved")
resolve(res);
return;
}
console.log("Promise rejected")
reject(res);
},
function(rej) {
console.log("promise rejected")
reject(rej);
}
)
}
)
}
function b() {
a('/test').then(
function(res) {
console.log('success');
console.log(res)
},
function(rej) {
console.log('Rejected');
console.log(rej)
}
)
}
b();
se 'fetch' è l'operazione di recupero che esiste in tutti i browser moderni, è, come si sa chiaramente, i rendimenti una promessa. Quindi non c'è bisogno di avvolgerlo in una promessa, confonde solo le cose –
In realtà ... si risolve anche con lo stato di errore come 400. Quindi, se voglio che il chiamato sappia ha un codice di errore ... Ho bisogno di avvolgere e rifiutare se non è ok/200. Anche se ... al momento ... il codice sopra riportato funziona come previsto (b funziona rifiutato) ... Sto guardando il mio codice per provare a riscrivere quanto sopra per abbinarlo. In entrambi i casi, il precedente era solo un esempio e fetch era proprio quello che potevo usare per creare una promessa facile da dimostrare. – Goblinlord
Sembra buono, con questo codice si ottiene "Promesso respinto", "Rifiutato". Come previsto. Non è chiaro quale sia il problema. – dfsq