我得到了一个带有异步回调的函数,例如
let readFile: (path: string, callback: (line: string, eof: boolean) => void) => void
Run Code Online (Sandbox Code Playgroud)
虽然我更喜欢使用AsyncIterable / AsyncGenerator签名的函数:
let readFileV2: (path: string) => AsyncIterable<string>
Run Code Online (Sandbox Code Playgroud)
如果没有readFileV2,我必须读取类似的文件
let file = await new Promise((res, err) => {
let file = ''
readFile('./myfile.txt', (line, eof) => {
if (eof) { return res(file) }
file += line + '\n'
})
})
Run Code Online (Sandbox Code Playgroud)
..同时readFileV2允许我做得更干净,就像
let file = '';
for await (let line of readFileV2('./myfile.txt')) {
file += line + '\n'
} …Run Code Online (Sandbox Code Playgroud)