即使在使用 'then' 之后,Fetch 也会返回 promise 而不是实际数据
我正在我的组件中进行一个简单的 fetch 调用,看起来像这样
I am making a simple fetch call in my component, which looks like this
var x = fetch(SOME_URL, SOME_POST_DATA)
.then((response) => response.json())
.then((responseJSON) => {return responseJSON});
console.log(x);
调用成功执行,但控制台打印的是 promise 而不是数据.我在这里错过了什么?
The call executes successfully but the console prints a promise instead of data. What am I missing here?
推荐答案
promise 的工作方式意味着您需要处理 responseJSON
inside 的处理程序>然后()代码>.由于请求的异步特性,外部代码在 Promise 解决时已经返回.
The way promises works mean you'll need to handle the responseJSON
inside the handler for then()
. Due to the asynchronous nature of requests the outer code will already have returned by the time the promise resolves.
一开始可能很难理解,但它与传统"AJAX 请求大致相同 - 您在回调中处理响应.
It can be hard to get your head around at first, but it's much the same as a "traditional" AJAX request - you handle the response in a callback.
以你为例:
var x = fetch(SOME_URL, SOME_POST_DATA)
.then((response) => response.json())
.then((responseJSON) => {
// do stuff with responseJSON here...
console.log(responseJSON);
});
更多阅读:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
相关文章