【发布时间】:2017-11-21 09:45:26
【问题描述】:
我正在 nodejs 和 typescript 中编写一个函数来搜索文件中的某些模式。
通过readline节点包提供的函数逐行读取文件。
代码看起来差不多这样
import * as readline from 'readline';
....
....
function _findSnippets(
filePath: string,
startSnippetToken: string,
endSnippetToken: string,
callback: (filePath: string, snippets: Array<Array<string>>) => void
) {
// do some prep stuff
const snippet = new Array<string>();
const rl = readline.createInterface({
input: fs.createReadStream(filePath),
crlfDelay: Infinity
});
rl.on('line', (line: string) => {
let isLineToBeAddedToSnippet: boolean;
// do the core of the logic to set the correct value for
// the variable isLineToBeAddedToSnippet
if (isLineToBeAddedToSnippet) {
snippet.push(line);
}
})
rl.on('close', () => {
callback(filePath, snippet);
})
}
我想通过 Observable 模式使用上面定义的函数,所以我使用 Observable 的bindCallback 函数来创建一个 Observable,它在执行回调时发出。
进行绑定的代码如下
const _findSnippetsObs = Observable.bindCallback(_findSnippets);
现在我想看到 Typescript 通过推理显示 _findSnippetsObs 函数返回一个 Observable 发射某种“对”变量,即回调的参数,它是 _findSnippets 函数的最后一个参数.相反,我通过智能感知看到的是 _findSnippetsObs 返回一个 Observable<string>,正如您在此快照中看到的那样
在我看来,智能感知功能,特别是在涉及基于 Observable 的异步行为时,是一个非常重要的工具。
因此,如果有人能帮助我纠正这个问题,我将不胜感激。
【问题讨论】:
标签: typescript types rxjs observable