导入时获取返回未定义

时间:2018-11-21 12:31:58

标签: javascript reactjs ecmascript-6 fetch-api

我有一个从URL提取数据并应返回数据的函数:

mongodb-driver-rx

问题在于,当我导入此函数并尝试使用它时,它总是返回const fetchTableData = () => { fetch('https://api.myjson.com/bins/15psn9') .then(result => result.json()) .then(data => { return data; }) } export default fetchTableData;

当我在控制台中记录函数内部的数据时,您可以看到它可用。当我尝试导入该功能时,该功能不起作用。

这是什么问题?为什么这样工作?

3 个答案:

答案 0 :(得分:5)

尝试此=)您还必须从fetchTableData函数返回某些内容。

const fetchTableData = () => {
  const fetchedData = fetch('https://api.myjson.com/bins/15psn9')
    .then(result => result.json())
    .then(data => {
        return data;
    })

    return fetchedData;
}

export default fetchTableData;

或者您可以像这样返回它:

const fetchTableData = () => {
      return fetch('https://api.myjson.com/bins/15psn9')
        .then(result => result.json())
        .then(data => {
            return data;
        })
    }

    export default fetchTableData;

答案 1 :(得分:3)

您需要将数据存储在全局变量中,或者将任何变量分配给fetch以获取返回数据。

//First way
fetch('https://api.myjson.com/bins/15psn9')
    .then(result => result.json())
    .then(data => {
        console.log("data",data);
    });
    
//Second way
let binData = null;

fetch('https://api.myjson.com/bins/15psn9')
    .then(result => result.json())
    .then(data => {
        binData = data;
        console.log("binData", binData);
    });
    

这是工作示例。

答案 2 :(得分:1)

在您的代码中,您没有从fetchTableData函数返回。仅来自第二个then()回调。当一个函数没有返回值时,将返回undefined

尝试以下方法:

const fetchTableData = () => {
const myResponse = fetch('https://api.myjson.com/bins/15psn9')
    .then(result => result.json())
    .then(data => {
        return data;
    })
return myResponse;
}

export default fetchTableData;

现在发生的是以下情况:

  1. 第二个then()函数返回的响应正在返回数据。
  2. 我们正在将这些数据保存在名为myResponse的变量中。
  3. 我们现在从函数fetchTableData返回此值。