【发布时间】:2020-09-24 12:00:21
【问题描述】:
我正在尝试使用promisify 创建readline 的异步版本。
以这种方式使用的东西:
import { Cli } from '../services/Cli';
const cli = new Cli();
const main = async () => {
await cli.question('What is your name ? ');
await console.log('\nBYE');
await process.exit(0);
};
这是我的尝试:
import { promisify } from 'util';
import readline from 'readline';
export class Cli {
private cli;
constructor() {
this.cli = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
}
question(text: string) {
return promisify(this.cli.question).call(this.cli, text);
}
}
我为 mysql 拥有的其他包装器启发了我,它运行良好:
import { promisify } from 'util';
import mysql from 'mysql';
import config from '../../config.test.json';
export class MySQL {
private mySQL;
constructor() {
this.mySQL = mysql.createConnection(config.database);
}
query(sql: string, args?: string | number | [] | {}) {
return promisify(this.mySQL.query).call(this.mySQL, sql, args);
}
}
// use it
this.mySQL = new MySQL();
const users = await this.mySQL.query("SELECT * FROM user");
return users
但是没有返回任何东西。有什么想法吗?
【问题讨论】:
-
为什么是
this.cli.question? readline 没有问题属性 -
嗯,我关注了nodejs.org/en/knowledge/command-line/…,还以为有
question的方法……? -
对不起,你说得对
-
别担心! :)
标签: node.js asynchronous async-await node-promisify