javascript - 为什么 .then(console.log) 可以工作,但常规的 console.log() 会出错?
问题描述
请参考所附图片。
这是我的第一个节点应用程序/脚本,我试图理解为什么我.then(console.log):
在最后附加时得到不同的结果,而当我只使用console.log(list);
.
如果图像未在此处加载,则为片段
// Generate list
const list = r.getSubreddit('AskReddit')
.getTop({ time: 'all', limit: 1 })
.map(post => ({
title: post.title,
url: post.url,
upvotes: post.ups
}))
.then(console.log);
// console.log(list);
我收到此错误消息:
internal/util/inspect.js:373
const symbols = Object.getOwnPropertySymbols(value);
^
TypeError: 'ownKeys' on proxy: trap result did not include 'prototype'
at Function.getOwnPropertySymbols (<anonymous>)
at getKeys (internal/util/inspect.js:373:26)
at formatRaw (internal/util/inspect.js:617:12)
at formatValue (internal/util/inspect.js:540:10)
at inspect (internal/util/inspect.js:197:10)
at Object.formatWithOptions (util.js:84:12)
at Console.(anonymous function) (internal/console/constructor.js:274:15)
at Console.log (internal/console/constructor.js:284:61)
at Object.<anonymous> (/Users/ik/Documents/Personal/list.js:27:9)
at Module._compile (internal/modules/cjs/loader.js:799:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:810:10)
at Module.load (internal/modules/cjs/loader.js:666:32)
at tryModuleLoad (internal/modules/cjs/loader.js:606:12)
at Function.Module._load (internal/modules/cjs/loader.js:598:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:862:12)
at internal/main/run_main_module.js:21:11
解决方案
第一次调用 'r.getSubreddit(...).getTop(...).map(..)' 正在返回一个承诺。这就是为什么你可以调用 '.then(console.log)'</p>
'.then' 表示“一旦承诺完成,或者换句话说,当来自 getSubreddit 的调用完成时执行此操作。
当您说“console.log(list)”时,您要求的值可能存在也可能不存在。您创建了 Promise,JavaScript 立即调用下一个调用,即您的 console.log,并且列表仍在等待 Promise 解决。当您使用 .then() 时,您是在说“在 console.logging 输出之前等待这个承诺解决。”</p>
推荐阅读
- javascript - 如果我们访问相同的路径,React 中的 Route 组件会重新加载组件吗?
- javascript - 如何使用 python 运行特定的 Javascript 函数
- nginx - Zabbix docker nginx 日期时间问题
- linux - Git over ssh:权限被拒绝公钥
- html - 带有 div 的 CSS 过渡持续时间不起作用
- python-3.x - 在网格中查找最大值的坐标
- httprequest - http/post 带有 :edn-params 的防伪令牌
- javascript - 从 JSON 映射嵌套数组以响应下拉列表
- excel - 在 Excel 中计算单元格
- java - 无法在里面找到元素