Javascript 如何从fetch函数返回对象?

Javascript 如何从fetch函数返回对象?,javascript,node.js,reactjs,fetch,Javascript,Node.js,Reactjs,Fetch,我想创建一个外部函数来获取数据并返回结果。 但我不能让它工作,这是我的功能: //Request.js: import React from 'react' import { authHeader } from "../../jwt/_helpers/auth-header"; import { handleResponse } from "../../jwt/_helpers/handle-response"; export default func

我想创建一个外部函数来获取数据并返回结果。
但我不能让它工作,这是我的功能:

//Request.js:

import React from 'react'

import { authHeader } from "../../jwt/_helpers/auth-header";
import { handleResponse } from "../../jwt/_helpers/handle-response";

export default function Request(method,request) {
   const requestOptions = {
        method: method,
        withCrendtials: true,
        headers: authHeader(),
   };
   fetch(process.env.REACT_APP_API + request, requestOptions)
        .then(handleResponse)
        .then(
            (result) => {
                console.log(result); // This returns an object
                return result // This returns undefined
            },
            (error) => {
                return error
            }
        );
}
然后我这样使用它:

// Main.js:

import Request from './Request';

let obj = Requete("GET", "/myPath/myQuery");
this.setState({foo: obj.items});
在我的Request.js文件中,我记录结果,得到正确的对象,然后返回它,在Main.js中得到该函数的未定义值

如果我将我的代码从Request.js复制到Main.js,它就可以正常工作
但是我的代码变得不可读,因为获取查询几乎每行占用20行

有什么想法吗?

尝试从导出的函数返回提取,然后在main.js中使用.then等待结果,然后在setState中使用它:

export default function Request(method, request) {
  const requestOptions = {
    method: method,
    withCrendtials: true,
    headers: authHeader(),
  };
  return fetch(process.env.REACT_APP_API + request, requestOptions)
    .then(handleResponse)
    .then(
      (result) => {
        console.log(result); // This returns an object
        return result; // This returns undefined
      },
      (error) => {
        return error;
      }
    );
}

解释是,导出的函数“Request”在提取完成之前返回,但由于没有return语句,它没有返回任何内容(
未定义)。添加return语句使它返回一些东西:第二个返回的承诺随后附加到初始获取。在main.js中,我们使用一个函数调用该承诺的.then方法,该函数在后者解析时给出该承诺的结果(obj)。然后它可以用它做它喜欢的事情。(您可以将.then函数的主体想象为存在于比周围代码更晚的时间段内,并且在提取完成之后)。

返回结果
不会“返回未定义的”
obj.items
未定义,因为
obj
是一个未解析的
Promise
实例。能否将代码添加到代码示例标记中?问题是
请求
函数没有返回任何内容。
then
回调返回的对象很好,但只会导致承诺解析。
// Main.js:
import Request from './Request';

Request("GET", "/myPath/myQuery").then(obj => {
  this.setState({foo: obj.items});
})