node.js - NodeJS:从交互式控制台处理 Promise
问题描述
我正在学习 NodeJS。我发现真正令人讨厌的一件事是,在调试和/或只是在各种库的接口上闲逛时使用交互式控制台的 Promise。工作流程正常;调用一些库来做一些工作,等待结果,查看结果以查看它的实际行为和外观。
例如(仅举例)我想以交互方式检查从Jimp返回的图像数据结构。我发现自己从控制台这样做:
const Jimp = require('jimp');
const fs = require('fs');
let data = fs.readFileSync('path/to/my/test/images')
let image = null
Jimp.read(data).then((result, error) => { image = result; });
// Work with image here ...
这个样板写起来很烦人。我想我错过了一个技巧。有没有更方便的方法来解决这个问题?可以设置一个设置,或者我可以加载一个库还是什么?
我宁愿这样做:
...
let image = await Jimp.read(data);
// Work with image here ...
但这给出了“SyntaxError:await 仅在异步函数中有效”。或者,如果不是这样,那么也许:
...
let image = resolveMe(Jimp.read(data))
// Work with image here ...
PS“异步/等待”不是这个问题的答案。为了评估异步函数,您必须将控制权交还给事件循环,并且您不能在当前 AFAIK的交互式提示下执行此操作。
解决方案
我偶然发现了我的 Q 的 SO答案。对于节点 v12+,您可以设置--experimental-repl-await选项。一直就在我的眼皮底下……总结:
没有:
$ node
Welcome to Node.js v12.18.1.
Type ".help" for more information.
> await Promise.resolve(7)
await Promise.resolve(7)
^^^^^
Uncaught SyntaxError: await is only valid in async function
和:
$ node --experimental-repl-await
Welcome to Node.js v12.18.1.
Type ".help" for more information.
> await Promise.resolve(7)
7
推荐阅读
- python-3.x - 当我尝试使用 cv2.imshow() 打开图像时,会弹出一个空白图像窗口
- ios - JSON解码不填充表视图
- tfs - 如何配置 Team Foundation Server 2015 以强制所有工作区仅限本地?
- laravel - 在 apache 虚拟主机中部署多个 laravel 项目
- python - 只需要获取没有索引和数据类型Python的模式值
- python - 从 Python 中的不同目录导入
- php - 无法将 PayPal\Api\Amount 类型的对象用作数组
- blackberry - 无法创建调试令牌或签名栏文件
- go - 将字符串解析为时间戳正在切断字符串的年份部分
- flutter - 如何在 Flutter 中为 Modal Bottome Sheet 实现模糊背景?