2

我正在尝试使用 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;
    });
}

并进入{}浏览器。

请帮助我(节点学习者)从错误中恢复过来。

4

2 回答 2

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);
});
于 2017-07-10T14:31:05.867 回答
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为此

于 2021-03-09T18:21:36.467 回答