我正在尝试使用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;
});
}
在浏览器中获得{}
。
请帮助我(节点学习者)克服错误。
答案 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