Я немного смущен тем, как правильно использовать выборку. Кажется, что оно разрешимо даже когда я возвращаю статус ошибки. Правилен ли приведенный ниже код (обертывание выборки в другое обещание)?Отклонение обещания при использовании выборки
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();
если 'fetch' является выборка, которая существует во всех современных браузерах, это, как вы четко знаете, возвращается Обещание. Поэтому нет необходимости обертывать это обещанием, оно только путает вещи –
Фактически ... он разрешает даже с статусом ошибки, например, 400. Следовательно, если я хочу, чтобы вызываемый узнал, что он получил код ошибки ... Мне нужно обернуть и отклонить, если это не нормально/200. Хотя ... в данный момент ... приведенный выше код работает так, как ожидалось (b запускает отказ) ... Я смотрю на свой код, чтобы попытаться переписать выше, чтобы соответствовать ему. В любом случае, приведенное выше было всего лишь примером, и выбор был именно тем, что я мог использовать, чтобы создать обещание, которое легко продемонстрировать. – Goblinlord
Выглядит хорошо, с помощью этого кода вы получаете «Обещание отклонено», «Отклонено». Как и ожидалось. Неясно, в чем проблема. – dfsq