powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Promise
6 сообщений из 6, страница 1 из 1
Promise
    #39513961
am_sasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Осваиваю промисы.
Код: 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.
'use strict';

// сделать запрос
httpGet('/article/promise/user.json')
  // 1. Получить данные о пользователе в JSON и передать дальше
  .then(response => {
    console.log(response);
    let user = JSON.parse(response);
    return user;
  })
  // 2. Получить информацию с github
  .then(user => {
    console.log(user);
    return httpGet(`https://api.github.com/users/${user.name}`);
  })
  // 3. Вывести аватар на 3 секунды (можно с анимацией)
  .then(githubUser => {
    console.log(githubUser);
    githubUser = JSON.parse(githubUser);

    let img = new Image();
    img.src = githubUser.avatar_url;
    img.className = "promise-avatar-example";
    document.body.appendChild(img);

    setTimeout(() => img.remove(), 3000); // (*)
  });


Как в цепочке из 1 'user' передать в 3.
...
Рейтинг: 0 / 0
Promise
    #39514711
DeanWinchester
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
httpGet('/article/promise/user.json')  
  .then(response => {
    console.log(response);
    let user = JSON.parse(response);
    return httpGet(`https://api.github.com/users/${user.name}`);
  })  
  .then(githubUser => {
    console.log(githubUser);
    githubUser = JSON.parse(githubUser);

    let img = new Image();
    img.src = githubUser.avatar_url;
    img.className = "promise-avatar-example";
    document.body.appendChild(img);
    setTimeout(() => img.remove(), 3000); // (*)
  });
...
Рейтинг: 0 / 0
Promise
    #39514724
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
am_sasa,

Нормальным способом, юзая then - никак. Либо большой блок кода, либо дополнительные переменные с замыканиями.

Но.

Если использовать современный async/await, то код становится более читаемым и проблема уходит сама собой
...
Рейтинг: 0 / 0
Promise
    #39514725
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: javascript
1.
2.
3.
4.
5.
6.
7.
  let response = await httpGet('/article/promise/user.json');

  let user = JSON.parse(response);

  let githubResponse = await httpGet(`https://api.github.com/users/${user.name}`);

  let githubUser = JSON.parse(githubUser);
...
Рейтинг: 0 / 0
Promise
    #39514726
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом
Код: javascript
1.
2.
3.
4.
5.
6.
7.
  let response = await httpGet('/article/promise/user.json');

  let user = JSON.parse(response);

  let githubResponse = await httpGet(`https://api.github.com/users/${user.name}`);

  let githubUser = JSON.parse(githubResponse );



Перепутал
...
Рейтинг: 0 / 0
Promise
    #39514854
am_sasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Агнец за бортом,

Да, вроде оно! Спасибо!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Promise
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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