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 &lt;pending&gt; 但是,如果我从最后一个 .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

node-fetch 从 html 网站获取 id 但我收到错误 200 undefined

node.js node-fetch - 传递附加到url的查询字符串的问题

async/await 和promise的理解