Node-fetch 返回 Promise <pending> 而不是所需的数据 [重复]
Posted
技术标签:
【中文标题】Node-fetch 返回 Promise <pending> 而不是所需的数据 [重复]【英文标题】:Node-fetch returns Promise <pending> instead of desired data [duplicate]Node-fetch 返回 Promise <pending> 而不是所需的数据 [重复] 【发布时间】:2017-09-10 17:54:01 【问题描述】:我目前正在尝试使用 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 数据。有什么方法可以返回相同的数据?
(如果这只是我的一个误解问题,我提前道歉,因为我对 javascript 相当陌生)
【问题讨论】:
getJson("...").then(console.log);
【参考方案1】:
JavaScript Promise 是异步的。你的功能不是。
当您打印函数的返回值时,它将立即返回 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 返回 Promise <pending> 而不是所需的数据 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Mailchimp API 在使用 node-fetch 而不是 json 时返回一个大的 gzip 对象
JavaScript的Promise.all和Promise.race
node-fetch 从 html 网站获取 id 但我收到错误 200 undefined