Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Promise / 6 сообщений из 6, страница 1 из 1
01.09.2017, 11:52
    #39513961
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Promise
Добрый день!
Осваиваю промисы.
Код: 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
03.09.2017, 15:56
    #39514711
DeanWinchester
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Promise
Код: 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
03.09.2017, 18:29
    #39514724
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Promise
am_sasa,

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

Но.

Если использовать современный async/await, то код становится более читаемым и проблема уходит сама собой
...
Рейтинг: 0 / 0
03.09.2017, 18:32
    #39514725
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Promise
Код: 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
03.09.2017, 18:43
    #39514726
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Promise
Агнец за бортом
Код: 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
04.09.2017, 09:22
    #39514854
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Promise
Агнец за бортом,

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


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