使用函数使用node-fetch获取数据

时间:2017-07-10 13:21:20

标签: node.js nodes node-fetch

我正在尝试使用node-fetch通过get调用获取数据。

// Other code

fetch('https://jsonplaceholder.typicode.com/posts?userId=1')
.then(function(data) {
    return data.json();
})
.then( function(result){
    res.send(result);
});

直到这里数据才能成功呈现。我想用函数调用替换这个代码,以便可以重用它。

我试过了:

function getDataFromUrl(){
    fetch('https://jsonplaceholder.typicode.com/posts?userId=1')
    .then(function(data) {
        return data.json();
    }).then( function(result){
        return result;
    });
}

称为getDataFromUrl()并且什么都没有。

也尝试过:

function getDataFromUrl(){
    return fetch('https://jsonplaceholder.typicode.com/posts?userId=1')
    .then(function(data) {
        return data.json();
    }).then( function(result){
        console.log(result); // prints desired data
        return result;
    });
}

在浏览器中获得{}

请帮助我(节点学习者)克服错误。

2 个答案:

答案 0 :(得分:2)

以这种方式定义你的功能:

function getDataFromUrl(resp){
    fetch('https://jsonplaceholder.typicode.com/posts?userId=1')
    .then(function(data) {
        return data.json();
    }).then(function(parsed){
        resp(parsed);
    });
}

以这种方式打电话:

getDataFromUrl(function(resp){
    res.send(resp);
});

答案 1 :(得分:0)

我使用 async 和 await 来解决这个问题。下面是包含 fetch 调用的函数:

const externalServiceCall = async (statusRequest, requestContext) => {

    console.log(finalUrl);

    const res = await fetch(finalUrl,
        {method: "GET", headers: headers})
        .then(res => res);

    return res;
}

然后在调用函数中我做

const externalResponse = await externalServiceCall(statusRequest, requestContext)

注意:为此调用函数也应该是async