Javascript react native fetch()。然后()返回对象
我正在执行一个与react native示例代码非常相似的网络请求 Networking.jsJavascript 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
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()之外指定了一个标准值
方法,并让awhile
循环等待值发生变化?@j.Doe当调用我在回答中提到的then
块时,这意味着请求已完成。不需要其他语句。为了更方便地使用,如spender建议的,您应该使用异步和等待。我建议返回操作阅读书籍,了解承诺是如何工作的,尤其是异步
和等待
如何让生活在承诺面前变得更加轻松。谢谢。既然我已经有了承诺,为什么还要回复承诺呢。tryLogin()中的thens方法?我需要做什么,才能保存对变量的响应以便进一步处理?@j.Doe请检查您问题的更新答案。要保存响应,只需将其分配给在then()之外定义的变量即可
method.@mohammaddrezafarahani当然可以,但是如何检查请求是否已完成?是否在then()之外指定了一个标准值
方法,并让awhile
循环等待值发生变化?@j.Doe当调用我在回答中提到的then
块时,表示请求已完成。不需要其他语句。为了更方便地使用spender建议的方法,您应该使用异步和等待。