【发布时间】:2018-04-05 02:06:29
【问题描述】:
正如标题所述,我想知道是否可以在 node.js 中将promisify (https://nodejs.org/dist/latest-v8.x/docs/api/util.html#util_util_promisify_original) 用于readline?我只能这样做:
let data = [];
const parse = () => {
return new Promise((resolve, reject) => {
const rl = readline.createInterface({
input: fs.createReadStream(path)
});
rl.on('line', (line) => {
data.push(line);
});
rl.on('close', () => {
resolve(data);
});
});
};
【问题讨论】:
-
您只能承诺错误优先回调,并使用
promisify.custom其他不遵循模式的回调类型。对于流和事件发射器,您需要实现自己的逻辑,它确实共享一个通用接口(@987654327@,finish),但用例非常不同。 -
是的,这就是我的怀疑。我的实施是否足够?
-
你的实现的问题是你在比你的承诺更高的范围内添加了
data,它会为每次使用parse积累数据,如果你使用parse承诺2次,第二次使用将附加第一个值,然后也附加第二个值。更好的方法是在 promise 中设置let data,这样每次使用时您将只存储新数据。 -
你说的对,我完全忘记了!
标签: javascript node.js promise