Javascript react native fetch()。然后()返回对象

Javascript react native fetch()。然后()返回对象,javascript,react-native,promise,fetch,return-value,Javascript,React Native,Promise,Fetch,Return Value,我正在执行一个与react native示例代码非常相似的网络请求 Networking.js export default class Networking { static tryLogin() { return fetch('https://exampleserver.com') .then((response) => response.json()) .then((responseJson) => { return response

我正在执行一个与react 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并在另一个类中处理它,但是,
。然后((responseJson)
将返回objectObject而不是我的JSON。我使用
Networking.tryLogin();

当用
alert(responseJson)
替换
return responseJson
时,它会按预期工作,所以它必须是带有返回的东西

编辑: 执行console.log()时,我得到:

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

您将在
tryLogin()
中返回承诺。因此,您需要在
中访问其值。然后()
方法:

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

除评论中提出的问题外,如中所述:

联网本质上是一种异步操作。获取方法将返回一个承诺,使其能够直接进行 编写以异步方式工作的代码


您将在
tryLogin()
中返回承诺。因此,您需要在
中访问其值。然后()
方法:

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

除评论中提出的问题外,如中所述:

联网本质上是一种异步操作。获取方法将返回一个承诺,使其能够直接进行 编写以异步方式工作的代码

尝试
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;
});
尝试
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;
});


是否只是您返回的对象太大,控制台无法显示?请显示您是如何使用对tryLogin的调用的?您在哪里看到返回的object对象?如在警报中?还是您正在使用React本机调试器将其发送到控制台?我正在调用函数并向其发出警报:
alert(Networking.tryLogin());
我在警报框中看到“objectObject”,但在console.log()中是相同的@spender请查看编辑。是否只是您返回的对象太大,控制台无法显示?请显示您是如何使用对trylogin的调用的?您在哪里看到返回的objectObject?如在警报中?还是您正在使用React本机调试器将其发送到控制台?我正在调用函数并向其发出警报:
alert(Networking.tryLogin());
我在警报框中看到“objectObject”。但在console.log()中是相同的@spender请看一下编辑。我建议OP回到书中,了解承诺是如何工作的,尤其是
async
wait
如何让生活在承诺面前变得更轻松。谢谢。既然我已经有了承诺,为什么我还要回复承诺呢方法?我需要做什么,才能保存对变量的响应以便进一步处理?@j.Doe请检查您问题的更新答案。要保存响应,只需将其分配给在
then()之外定义的变量即可
method.@mohammaddrezafarahani当然可以,但是如何检查请求是否已完成?是否在
then()之外指定了一个标准值
方法,并让a
while
循环等待值发生变化?@j.Doe当调用我在回答中提到的
then
块时,这意味着请求已完成。不需要其他语句。为了更方便地使用,如spender建议的,您应该使用
异步
等待
。我建议返回操作阅读书籍,了解承诺是如何工作的,尤其是
异步
等待
如何让生活在承诺面前变得更加轻松。谢谢。既然我已经有了承诺,为什么还要回复承诺呢。tryLogin()中的thens方法?我需要做什么,才能保存对变量的响应以便进一步处理?@j.Doe请检查您问题的更新答案。要保存响应,只需将其分配给在
then()之外定义的变量即可
method.@mohammaddrezafarahani当然可以,但是如何检查请求是否已完成?是否在
then()之外指定了一个标准值
方法,并让a
while
循环等待值发生变化?@j.Doe当调用我在回答中提到的
then
块时,表示请求已完成。不需要其他语句。为了更方便地使用spender建议的方法,您应该使用
异步
等待