节点获取 returns Promise { <pending> } 而不是所需的数据
Node-fetch returns Promise { <pending> } instead of desired data
我目前正在尝试使用 node-fetch 模块从网站上获取 JSON,并实现了以下功能:
var fetch = require("node-fetch");
function getJSON(URL) {
return fetch(URL)
.then(function(res) {
return res.json();
}).then(function(json) {
//console.log(json) logs desired data
return json;
});
}
console.log(getJson("http://api.somewebsite/some/destination")) //logs Promise { <pending> }
当它打印到控制台时,我只收到 Promise { <pending> }
但是,如果我从最后一个 .then 函数将变量 json
打印到命令行,我将获得所需的 JSON 数据。有什么方法可以 return 相同的数据吗?
(如果这只是我的误解问题,我提前道歉,因为我是 Javascript 的新手)
A JavaScript Promise 是异步的。你的函数不是。
当您打印函数的 return 值时,它会立即 return Promise(仍未决)。
示例:
var fetch = require("node-fetch");
// Demonstational purpose, the function here is redundant
function getJSON(URL) {
return fetch(URL);
}
getJson("http://api.somewebsite/some/destination")
.then(function(res) {
return res.json();
}).then(function(json) {
console.log('Success: ', json);
})
.catch(function(error) {
console.log('Error: ', error);
});
我目前正在尝试使用 node-fetch 模块从网站上获取 JSON,并实现了以下功能:
var fetch = require("node-fetch");
function getJSON(URL) {
return fetch(URL)
.then(function(res) {
return res.json();
}).then(function(json) {
//console.log(json) logs desired data
return json;
});
}
console.log(getJson("http://api.somewebsite/some/destination")) //logs Promise { <pending> }
当它打印到控制台时,我只收到 Promise { <pending> }
但是,如果我从最后一个 .then 函数将变量 json
打印到命令行,我将获得所需的 JSON 数据。有什么方法可以 return 相同的数据吗?
(如果这只是我的误解问题,我提前道歉,因为我是 Javascript 的新手)
A JavaScript Promise 是异步的。你的函数不是。
当您打印函数的 return 值时,它会立即 return Promise(仍未决)。
示例:
var fetch = require("node-fetch");
// Demonstational purpose, the function here is redundant
function getJSON(URL) {
return fetch(URL);
}
getJson("http://api.somewebsite/some/destination")
.then(function(res) {
return res.json();
}).then(function(json) {
console.log('Success: ', json);
})
.catch(function(error) {
console.log('Error: ', error);
});