powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Подскажите по Promise
25 сообщений из 96, страница 2 из 4
Подскажите по Promise
    #39917557
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Поиск - Вавилонская башня
Код: sql
1.
2.
3.
4.
5.
6.
7.
doSomething(function(result) {
  doSomethingElse(result, function(newResult) {
    doThirdThing(newResult, function(finalResult) {
      console.log('Итоговый результат: ' + finalResult);
    }, failureCallback);
  }, failureCallback);
}, failureCallback);
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917558
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

да пофиг на вавилонскую башню.
вопрос в том что промисы тут не помогут.
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917565
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
А если придет какой студент и сделает?
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917566
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
А если придет какой студент и сделает?
я изучу его опыт.
ты заинтриговал меня .давай подробностей больше - попробую, ради спортивного интереса
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917571
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Угу. Тебя уговаривать три дня надо как девочку).
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917572
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Угу. Тебя уговаривать три дня надо как девочку).
считай что уговорил
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917574
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917580
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro, я не угадал что ли?
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917582
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил
спасибо. Я в шоке. Тут либа нужна? Я думал что уже все есть в самом языке.
Буду думать.
Спасибо.
Alexander A. Sak,
Не понял тебя.
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917583
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скопировать не сложно.
Alexander A. Sak
PetroNotC Sharp
Добрый день.
Не получается вызвать синхронно два ajax.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
returnPromise().then(log(1), log(2)).catch....

function returnPromise() {
    return new Promise((resolve, reject) => {
          return $.ajax(.....
               .... 
                success:
                      if 200 reject();


Мне на 200 нужно именно остановить выполнение второго ajax.
А сейчас и log(1) и log(2) вызываются.
Спасибо.


Может, надо не вызывать log(1) и log(2), а передавать функции, вызывающие log(1) и log(2)? Что-то типа
Код: javascript
1.
returnPromise().then(()=>{log(1)}, ()=>{log(2)}).catch....

...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917584
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

это тебе не подойдёт. там отслеживается "не нормальное поведение"
у тебя же всё штатное с точки зрения логики js и протокола ajax
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917622
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Если по старинке, то это Вавилонская башня коллбэков. Так мне не надо.

await не работает?
https://stackoverflow.com/questions/27612372/how-to-await-the-ajax-request
Код: javascript
1.
2.
3.
4.
5.
6.
async function f() {
    var res = await getData(url);
    //do something return or throw
    var res2 = await getData(url);
}
//getData возвращает промис
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917624
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://jsfiddle.net/3xmuz1Lo/6/
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
function getData(ajaxurl, data) {
  return $.ajax({
    url: ajaxurl,
    type: 'POST',
    json : JSON.stringify(data)
  });
};

async function test() {
  try {
    const res = await getData("/echo/json/",{a:1})
    console.log("res:",res)
  } catch(err) {
    console.log("err:",err);
  }
}
test();
//output:
//res: {} (because api fuckup)
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917632
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak,
crutchmaster,
Спс. Счас попробую. Отпишусь.
вадя,
Да фиг знает..Я же джун в js.
Может оно анализирует статус xhr.status а он у меня 200 значит что прерываемся.
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917654
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Может оно анализирует статус xhr.status а он у меня 200 значит что прерываемся.
фишка ajax в том , что в на запрос, клиент должен получить ответ, а сервер обязан дать ответ.
в твоём случае статус 200 говорит, что сервер ответил, и ответ с точки зрения протокола правильный.
статус 200 буде в любом случае, ввёл ты логин / пароль правильные или нет. только ответ буде разный -форма логина, если логин/пароль не верный или что-то другое , если логин /пароль верные
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917663
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Если сераер пускает то 302 код идет. Переход с урла логина на урл где работаем.
Дак ты делаешь пример или занят пока?
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917682
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

https://jsfiddle.net/7poz48ka/3/

Без jquery, чтобы совсем было понятно:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
var log = console.log
function getData(ajaxurl, data) {
//создаём объект промис, в агрументе конструктора функция где будет колбечный код. 
//У функции два аргумента - первый - функция, когда всё хорошо и второй - тоже функция
//Вот их и дёргаем когда это уместно прямо из этих вонючих колбеков
//После создания промиса функция сразу отрабатывает и возвращает промис, по-нашему - обещание.
  return new Promise(function(ok, fail) {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
      if (this.readyState == 4 && this.status == 200) {
        ok(this);
        //this - это наш XMLHttpRequest xhttp
      } 
      if (this.status == 400) {
        fail(this);
      }
    };
    //Вызов ajax, ничего интересного.
    xhttp.open("POST", ajaxurl, true);
    xhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhttp.send("json="+JSON.stringify(data));
  });
}
//await работает только в async функции. Async функция всегда возвращает обещание, 
//прям как какой-нибудь мэр, губернатор или депутат.
async function test() {
  try {
//Раз ждать результата здесь и сейчас никто не будет, можно сделать await 
//и ждать обещания от других функций. По сути мы разворачиваем колбек 
//в нормальный код, но колбечным js от этого быть не перестаёт. 
//Просто такой костыль, чтобы не делать портянки из колбеков 
//или .this(()=>{alala}).this(()=>{elele}).catch(nop) и пр. дерьмишко.
    const res = await getData("/echo/json/", {a: 1})
    log("res:", res.response);
  } catch (err) {
//если промис зафейлится будет сделан throw
    log("err:", err);
  }
}

test();
//Вызова test никто не ждёт. Он вернёт промис и код будет выполняться дальше. По-моему глобальная функция не асинхронная

//PS. Да, код вызова ajax написан через жопу, так делать не надо.
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917683
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Дак ты делаешь пример или занят пока?
я жду подробностей, про 302 наконец узнал...
что приходит при статусе 302?
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917698
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
PetroNotC Sharp
Дак ты делаешь пример или занят пока?
я жду подробностей, про 302 наконец узнал...
что приходит при статусе 302?
ты мастер не по теме спрашивать.
Я могу только факультативно так как к вопросу не имеет отношение. В вопросе стоит как второй запрос запустить по резулату первого.
На 302 идет урл куда пустит сервер для работы. Прихожая называется.
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917699
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,
В том и дело что нужен $.ajax
Но все равнр посмотрю. Спс.
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917709
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,
У тебя xhttp.send( один раз?
А нужно в примере два раза.
Первый это аутентификация и второй рабочий в зависимости от первого
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917711
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрался до компа, счас все посмотрю.
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917717
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

тогда тебе надо https://learn.javascript.ru/promise-chaining
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917720
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
xhttp.onreadystatechange = function() {
      if (this.readyState == 4 && this.status == 200) {
        fail(this);
        //this - это наш XMLHttpRequest xhttp
      } 
      if (this.status == 302) {
        ok(this);
      }
    };
...
Рейтинг: 0 / 0
Подскажите по Promise
    #39917746
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
PetroNotC Sharp,

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
xhttp.onreadystatechange = function() {
      if (this.readyState == 4 && this.status == 200) {
        fail(this);
        //this - это наш XMLHttpRequest xhttp
      } 
      if (this.status == 302) {
        ok(this);
      }
    };


У меня так и было, только this не передавал.
Ты проверь, при fail вызывается log1 функция или нет?
Я чуть позже с this проверю.
...
Рейтинг: 0 / 0
25 сообщений из 96, страница 2 из 4
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Подскажите по Promise
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]