如何解决Object.length中的Promise Pending错误

时间:2019-06-11 02:18:44

标签: node.js json

我想用Object.key(getJsonCode).lengthget-json library来获取json的长度,但是我出错了。我该如何解决?

当我使用gt-json库但对我不起作用时,我已经尝试使用异步并承诺

const json = getJson(url).then((result) => {
    Object.keys(result).length
}).catch((err) => {
    throw err
});

我希望输出json长度,但实际输出是 Promise { <pending> }

1 个答案:

答案 0 :(得分:0)

这种方法将实现您想要的,我们使用async / await模式:

async function logKeys() { 
    let json = await getJson(url);
    let keyCount = Object.keys(json).length;
    console.log("Key count: ", keyCount);
}

logKeys();

示例中的问题是您正在为json变量分配一个Promise。但是,此承诺的结果将是不确定的,因为第一个承诺处理程序没有返回值。

这就是您执行console.log(json)时打印的内容。

您也可以尝试:

const jsonPromise = getJson(url).then((result) => {
    return Object.keys(result).length;
}).catch((err) => {
    throw err
});

jsonPromise.then(result => console.log("Key count: ", result));