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

Ребят, привет У меня есть функция, которая делает ajax запрос и

результат ajax должен положится в переменную

Я себе представлял это так
let dataset = getFunction(address);

но как я понимаю так не работает потому что getFunction пока делает ajax - еще не определена.

Внутри
`function getFunction(address) {

let res;
let data = {
action: 'bridge',
address: address
}

$.ajax({
url: ajaxurl,
type: 'POST',
data: data,
dataType : 'json'})
.done(function(data) {
res = {
success: true
}
})
.fail(function(xhr, ajaxOptions, thrownError){
res = {
success: false
}
})

return res;
}`

Как это вообще грамотно сделать?

13 ответов

12 просмотров

Вы слышали вообще о коллбэках?

вы НЕ можете вернуть из функции результат запроса, так как на момент возврата функцией значения запрос ещё даже не отправился

Max-Tymoshyn Автор вопроса
allpeg
вы НЕ можете вернуть из функции результат запроса,...

это я понимаю, но не понимаю как сделать этот самый колбэк, его в результате выполнения делать? Я представляю что можно переменную заранее создать и после выполнения ajax просто ей присвоить значения. Но как это сделать не задавав заранее переменную. Нужно чтобы в коде можно было создать любую переменную и присвоить ей значение которое с ajax пришло

а вообще почитайте книгу специально для Вас: Вы не знаете JS. Асинхронная обработка и оптимизация Симпсон К. (2019) ссылку не даю т.к. в чатах запрещено пиратство, то есть, администрация чатов как правило против того, чтобы публиковать ссылки на телеграм чат "Библиотека программиста" где эту книгу можно скачать, и я Вас отговариваю искать этот чат и скачивать эту книгу, коенчно же её надо купить, я против пиратства.

Max Tymoshyn
это я понимаю, но не понимаю как сделать этот самы...

Нужно чтобы в коде можно было создать любую переменную и присвоить ей значение которое с ajax пришло Так можно НО на момент возврата из функции этой переменной ещё ничего не будет задано.

Max-Tymoshyn Автор вопроса
allpeg
а вообще почитайте книгу специально для Вас: Вы не...

ладно, в теле .done просто следующую функцию использую пока что, хотелось как-то разделить взятие данных и их обработку последующую, мало ли нужно будет в другую функцию эти данные запихнуть -_-

Max Tymoshyn
ладно, в теле .done просто следующую функцию испол...

У Вас два варианта: 1) делать коллбэк: Вы хотите чтобы было так: function getFunction(address) { ... } let foo = getFunction(123); alert(foo); // пример кода потребляющего fooА надо так: function getFunction(address, callback) { ... } getFunction(123,function(foo){ alert(foo); // пример кода потребляющего foo });2) использовать ES6 async/await/promise, но их надо учить

Max-Tymoshyn Автор вопроса
allpeg
У Вас два варианта: 1) делать коллбэк: Вы хотите ч...

теперь got it 🌝👌 приятнее подружится с ES6, но это уже на праздниках можно будет что-то поучить 🤤 где тут плюсики в карму ставить? 😄

Max Tymoshyn
теперь got it 🌝👌 приятнее подружится с ES6, но эт...

function getFunction(address, callback) { let res; let data = { action: 'bridge', address: address }; $.ajax({ url: ajaxurl, type: 'POST', data: data, dataType: 'json' }) .done(function(otherData) { // должны быть разные имена чтобы не путаться! res = { someData: otherData, success: true }; callback(res); // вызов callback! }) .fail(function(xhr, ajaxOptions, thrownError) { res = { success: false }; callback(res); // вызов callback! }); // без return! }пример потребления: getFunction('что-то',function(myRes){ // myRes доступна тут if(myRes.success){ console.log('ajax-запрос вернул:', myRes.someData); } else { alert('ашипка'); } }); // myRes НЕ доступна тут

Max-Tymoshyn Автор вопроса
allpeg
function getFunction(address, callback) { let ...

эх блин, думал по простому отделаться, теперь нужно колбэки по-быстрому понять)) 😄

Max Tymoshyn
эх блин, думал по простому отделаться, теперь нужн...

книгу что я Вам посоветовал купить (и не в коем случае не пиратить по ссылке в лс) как раз объясняет всё это

Max-Tymoshyn Автор вопроса
allpeg
книгу что я Вам посоветовал купить (и не в коем сл...

уже захожу на ЛитРес и не качаю по ссылке в лс :)

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта