169 похожих чатов

Привет всем. Застрял с fetch. Я никак не могу догнать,

как обратиться в объекту из ответа после завершения fetch и промисов?
let request = fetch(myurl, {
method: 'post',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
body: encodeBody(sendData)
})
.then((httpResponse) => {
if (httpResponse.ok) {
return httpResponse.json(); // .json() is a promise
}
return "Response not ok"
})
.then(json => {
console.log(json)
return json
})
.catch(err => { return "Fetch did not succeed" })
console.log(request); // и тут пусто

11 ответов

21 просмотр

внутри .then работай с результатом

SerJio-🇺🇦 Автор вопроса
Anton Permyakov
внутри .then работай с результатом

это я понял. Но мне надо из ответа вытащить ссылку и отправить ее на фронт

SerJio-🇺🇦 Автор вопроса
Anton Permyakov
и в чем проблема?

так, только внутри then же можно работать. А зам фетч находится в другой функции. и как раз не пойму, как выкинуть на самый верх значение

юзать async/await

SerJio 🇺🇦
так, только внутри then же можно работать. А зам ф...

ты можешь вернуть из своей функции этот промис и уже во внешней функции написать .then

SerJio 🇺🇦
так, только внутри then же можно работать. А зам ф...

Тогда вам нужно сделать так, чтобы эта функция тоже возвращала промис(fetch в вашем случае). И уже другой код дожидался ее результата.

SerJio-🇺🇦 Автор вопроса
Илюша 🎂
юзать async/await

``` export function paybtn_click(event, $w) { getPaymentLink(payment) .then(response => { if(response.result) { console.log('getPaymentLink OK'); } else { //location to NOT page console.log('getPaymentLink OK'); } }) ; } а на беке export async function getPaymentLink(paymentData) { let request = fetch(myUrl, { method: 'post', headers: {'Content-Type': 'application/x-www-form-urlencoded'}, body: encodeBody(sendData) }) .then((httpResponse) => { if (httpResponse.ok) { return httpResponse.json(); } return "Response not ok" }) .then(json => { // Here we consume the .json() promise. console.log(json) return json }) .catch(err => { return "Fetch did not succeed" }) console.log(request); } ```

SerJio 🇺🇦
``` export function paybtn_click(event, $w) { ge...

Ну у вас даже уже функция асинхнонная. Поставьте await перед fetch и все

SerJio 🇺🇦
и что мне это даст?

await буквально значит "подождать" В request будет записан уже результат промиса, а не сам промис. Еще желательно избавиться от then, раз уж вы используете async/await

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта