如何制作asynchrone synchrone =>如何测试异步处理(即写文件)

时间:2018-05-07 19:02:48

标签: node.js fs

我是文件操作函数的写单元测试(mocha chai) 我是Node.Js的初学者,但习惯了其他语言 我使用的是typescript,但样本是在JS

这是我的问题: 函数写入文件 当程序稍后读取文件时,文件为空 当我查看程序完成时,文件已填满

快速提供示例代码

const fs = require("fs");
function test() {
    let fss = fs.createWriteStream("file.txt", { flags: 'a+' });
    fss.write("bla");
    fss.end(() => {
        fss.destroy();
    });
}
test();
let val = fs.readFileSync('file.txt', 'utf8');
console.log(val); // empty

但这不是我第一次遇到这个问题。什么是好的做法:promisify,事件(我不喜欢作为回调的一切)?

1 个答案:

答案 0 :(得分:1)

有两种选择:

  1. 完成写入流

    后,调用所需的代码
    this shit is working yo!
  2. const fs = require("fs"); function test() { let fss = fs.createWriteStream("file.txt", { flags: 'a+' }); fss.write("bla"); fss.end(() => { fss.destroy(); let val = fs.readFileSync('file.txt', 'utf8'); // do stuff here with val }); } test();

    中返回Promise
    test
  3. 使用const fs = require("fs"); function test() { return new Promise((resolve, reject) => { let fss = fs.createWriteStream("file.txt", { flags: 'a+' }); fss.write("bla"); fss.end(() => { fss.destroy(); resolve(); }); }); } test().then(() => { let val = fs.readFileSync('file.txt', 'utf8'); // do stuff here with val }); / async语法

    await