// первая (~ajax)
function toCart(e) {
var req = new XMLHttpRequest();
....
req.onload = function() {
let res = this.response;
console.log(res); // {result: ok, count: 3}, а console.log(res.result) вернёт ok
return res; // {res.result,res.count} - тоже не работает
}
}
// вторая
function btnClick(e) {
...
let res = toCart([name, size]);
console.log(res); // undefined
}
return res.result
, то во второй я его получу (ok), но мне же нужно оба условия.async function toCart(e){
let response = await fetch('tocart.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
body: JSON.stringify(e)
});
let result = await response.json();
return result;
}
function btnClick(e) {
let res = toCart([name, size]);
console.log(res);
}
Наверно также, как достать [[PromiseResult]] из фетча?эх... наверное...
async function toCart(e){
let response = await fetch('tocart.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
body: JSON.stringify(e)
});
let result = await response.json();
return result;
}
let btntoCart = qq(".to-cart");
for (let i = 0, count = btntoCart.length; i < count; i++) {
btntoCart[i].addEventListener("click",async function() {
....
let res = await toCart([name, size]);
console.log(res);
});
}
Так вот, в старых браузерах, не помню какой браузер до какой версии, сами можете погуглить, значение credentials по умолчанию - omit.
Для чего тут эвейт?
Его используют, в основном, когда нужно получать upload progress. Всё остальное делают через fetch
Если я использую fetch, то я уже отказываюсь от всех пользователей IE
() =>
? function toCart(e, handleResponse) {
const req = new XMLHttpRequest();
...
req.onload = function() {
handleResponse(this.response);
}
}
function btnClick(e) {
...
toCart([name, size], function(response) {
console.log(response);
});
}