1

我目前正在尝试使用 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> } 但是,如果我json从最后一个 .then 函数将变量打印到命令行,我会得到所需的 JSON 数据。有没有办法返回相同的数据?

(如果这只是我的一个误解问题,我提前道歉,因为我对 Javascript 相当陌生)

4

1 回答 1

0

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);
});
于 2017-04-14T13:13:12.287 回答