即使在使用 '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

相关文章