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

Javascript 为什么我不能将承诺(或链接承诺)的结果存储在变量中?,javascript,node.js,promise,fetch,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) => { conso

这是一个愚蠢的问题,但是你能解释一下这个代码的错误吗? 为什么我不能做这个

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)
});
您不是调用返回承诺的函数,而是声明它。您需要在第一个括号之前再添加一组括号。然后,为了实际调用该函数:

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)
});
如果您希望稍后调用所有内容,则需要将整个内容放在其自己的函数中,在该函数中,承诺将在一个独立的范围内处理:

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

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

fetchProm();

最后得到的json u r可以分配给一个变量,以便以后可以使用它。要阅读更多关于Promissions而不是console.log的信息,您应该返回JSON,然后它会有它的值。。。如果你打电话给我们,非常感谢你的详细回答!我想没有办法在单个变量下声明一系列承诺,我必须将它们分解,对吗?很抱歉继续这样做,我实际上只添加了一点,将整个过程置于一个单数函数中!你为什么不直接去拿…然后。。。在这里包装函数增加了什么?我假设只需要一个孤立的上下文。我相信最初的误解是@νόονμπάντν认为调用fetchProm方法会自动调用所有后续的链式承诺。