【发布时间】:2019-08-27 19:56:54
【问题描述】:
出于 RxJS 学习的目的,我正在构建一个小型 node.js 应用程序,尽可能将所有内容放在流中。
作为第一步,我正在加载一个外部配置 yaml 文件。我见过 fs.readFile 包装在 bindNodeCallback 中的示例,它在调用时返回一个 observable。但是,下面设置的 readFile 变量仍然是“函数”的typeof。因此,我无法将 flatMap 链接到它。
在初始化我的应用程序之前,如何重新组织以下代码以链接 bindNodeCallback() 和 yaml.safeLoad()(不提供回调)?
const yaml = require('js-yaml');
const fs = require('fs');
const { bindNodeCallback, of } = require('rxjs');
const { mergeMap, map } = require('rxjs/operators');
const configPath = './config/config.yml';
const configEncoding = 'utf8';
const readFile = bindNodeCallback(fs.readFile);
readFile(configPath, configEncoding)
.flatMap(yamlString => of(yaml.safeLoad(yamlString))) // error: .flatMap is not a funciton
.subscribe(
config => {
console.log(config);
// launch the app when config is loaded
},
err => console.error(err)
);
【问题讨论】: