response-native fetch (). then () возвращающий объект Object - PullRequest
0 голосов
/ 09 февраля 2019

Я выполняю сетевой запрос, очень похожий на пример кода кода-native.

Networking.js

export default class Networking {

  static tryLogin() {

    return fetch('https://exampleserver.com')
    .then((response) => response.json())
    .then((responseJson) => {
      return responseJson;
    })
    .catch((error) => {
      console.error(error);
    });

  }
}

Я хотел бы получить responseJson и обработать его в другомкласс, однако, .then((responseJson) возвращает objectObject вместо моего JSON.Я вызываю этот метод, используя Networking.tryLogin();

При замене return responseJson на alert(responseJson) он работает, как и ожидалось, поэтому он должен быть чем-то с возвращаемым.

Редактировать: При выполнении консоли.log () Я получаю:

 Promise {
   "_40": 0,
   "_55": null,
   "_65": 0,
   "_72": null,
}

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Попробуйте Promise.all().

У меня был такой же вопрос, как у OP, и я нашел эту статью .Немного стар, но работает!Основным пунктом является следующий код:

const apiRequest1 = fetch('api.example1.com/search').then(function(response){ 
         return response.json()
});
const apiRequest2 = fetch('api.example2.com/search').then(function(response){
         return response.json()
});
const combinedData = {"apiRequest1":{},"apiRequest2:{}};
Promise.all([apiRequest1,apiRequest2]).then(function(values){
    combinedData["apiRequest1"] = values[0];
    combinedData["apiRequest2"] = values[1];
    return combinedData;
});
0 голосов
/ 09 февраля 2019

Вы возвращаете обещание в tryLogin().Поэтому вам нужно получить доступ к его значению в методе .then():

Networking.tryLogin().then(response => console.log(response));

В дополнение к вопросу, заданному в комментариях, как объяснено в response-native docs :

Работа в сети - это асинхронная операция. Методы извлечения вернут Promise , что упрощает написание кода, который работает асинхронно.

...