相关疑难解决方法(0)

node.js readfile问题

下面的代码创建一个文本文件,然后读取它,覆盖它,然后再次读取它.除了创建文件之外,还使用Node.js async readFile和writeFile执行三个I/O操作.

我不明白为什么第一次读取没有返回错误但没有数据.此代码的输出是:

  • 开始...
  • 完成.
  • 先读取返回的EMPTY数据!
  • 写完了OK
  • 第二次读取返回数据:更新文本

即使操作是以任意顺序发生的(由于它们的异步性质),我也不希望得到一个"空数据"对象.

任何想法为什么我在读取文件时得到一个空数据(没有错误)?

我有什么办法可以确保读取文件内容吗?

var fs = require('fs');
var fileName = __dirname + '/test.txt';

// Create the test file (this is sync on purpose)
fs.writeFileSync(fileName, 'initial test text', 'utf8');


console.log("Starting...");

// Read async
fs.readFile(fileName, 'utf8', function(err, data) {
    var msg = "";
    if(err)
        console.log("first read returned error: ", err);
    else {
        if (data === null) 
            console.log("first read returned NULL data!");
        else if (data === "") 
            console.log("first …
Run Code Online (Sandbox Code Playgroud)

node.js

7
推荐指数
1
解决办法
7382
查看次数

Nodejs:跨多个文件的全局变量

我已经为我的节点服务器编写了跨多个文件的代码。

如果我有一个文件,请说basket.js:

var Basket = {
    fruits : 0,
    
    addFruit : function() {
        fruits++;
    },

    removeFruit : function() {
        fruits--;
    },

    printFruit : function() {
        console.log(this.fruits);
    }
}
module.export = Basket;
Run Code Online (Sandbox Code Playgroud)

我还有另一个名为 give.js 的文件:

var Basket1 = require("./basket.js");

Basket1.addFruit();
Basket1.printFruit();
Run Code Online (Sandbox Code Playgroud)

另一个名为 take.js 的文件:

var Basket2 = require("./basket.js");

Basket2.removeFruit();
Basket2.printFruit();
Run Code Online (Sandbox Code Playgroud)

两个文件会写入同一个篮子实例吗?换句话说,他们会控制财产,水果吗?节点是否自行管理竞争条件?即如果两个修改水果的命令同时从 add 和 sub 进来,node 知道如何处理吗?

如果我想使两个文件可以同时查看一个单例并访问它,这是要走的路吗?或者其他人如何做到这一点?

javascript singleton node.js

3
推荐指数
1
解决办法
4132
查看次数

标签 统计

node.js ×2

javascript ×1

singleton ×1