Jestem nieco zdezorientowany, jak prawidłowo korzystać z pobierania. Wydaje się, że rozwiązuje się nawet wtedy, gdy otrzymam status błędu. Czy poniższy kod jest poprawny (zawijanie pobrania w innej obietnicy)?Odrzucanie obietnicy przy użyciu pobierania
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();
jeśli 'fetch' jest sprowadzić że istnieje we wszystkich nowoczesnych przeglądarkach, to, jak jasno wiedzieć, powroty obietnica. Więc nie ma potrzeby pakowania go w obietnicę, tylko myli rzeczy –
Właściwie ... rozwiązuje się nawet przy statusie błędu jak 400. Dlatego jeśli chcę, aby wywołany wiedział, że ma kod błędu ... Muszę zawinąć i odrzuć, jeśli nie jest ok/200. Chociaż ... w tej chwili ... powyższy kod działa zgodnie z oczekiwaniami (b uruchamia odrzucenie) ... Sprawdzam mój kod, aby spróbować przepisać powyższe, aby je dopasować. Tak czy inaczej, powyższe było tylko przykładem, a przydanie było tym, czego mogłem użyć, aby stworzyć obietnicę łatwą do wykazania. – Goblinlord
Wygląda dobrze, z tym kodem dostajesz "Obietnica odrzucona", "Odrzucona". Zgodnie z oczekiwaniami. Nie jest jasne, na czym polega problem. – dfsq