为什么不能将诺言(或链接的诺言)的结果存储在变量中?

时间:2018-07-15 11:19:53

标签: javascript node.js promise fetch

这是一个愚蠢的问题,但是您能解释一下这段代码有什么问题吗? 为什么我不能执行此操作?

const fetch = require('node-fetch');

const fetchProm = (() => {
    return fetch('https://api.github.com/users/github');
}).then((response) => {
    return response.json();
}).then((json) => {
    console.log(json)
});

1 个答案:

答案 0 :(得分:1)

Declaring a function is not the same as calling one

您不会调用返回承诺的函数,而只是对其进行了声明。您需要在第一个.then()之前添加另一组括号,以便实际上调用该函数:

const fetch = require('node-fetch');

const fetchProm = (() => {
    return fetch('https://api.github.com/users/github');
})().then((response) => {
    return response.json();
}).then((json) => {
    console.log(json)
});

如果以后要调用一切,则需要将整个内容放在其自己的函数中,在单独的范围内处理promise:

const fetch = require('node-fetch');

const fetchProm = () => {
    fetch('https://api.github.com/users/github')
    .then(response => response.json())
    .then(json => console.log(json));
};

fetchProm();