diff --git a/_server/editor_config.js b/_server/editor_config.js index 497c246e..188ecfde 100644 --- a/_server/editor_config.js +++ b/_server/editor_config.js @@ -1,5 +1,6 @@ function editor_config() { this.address = "_server/config.json"; + this._isWriting = false; } editor_config.prototype.load = function(callback) { @@ -27,8 +28,18 @@ editor_config.prototype.set = function(key, value, callback) { } editor_config.prototype.save = function(callback) { - fs.writeFile(this.address, JSON.stringify(this.config) ,'utf-8', function(e) { - if (e) console.error("写入配置文件失败"); + // 读写锁防止写文件冲突 + if (this._isWriting) return; + try { + this._isWriting = true; + fs.writeFile(this.address, JSON.stringify(this.config) ,'utf-8', function(e) { + this._isWriting = false; + if (e) console.error("写入配置文件失败"); + if (callback instanceof Function) callback(); + }) + } catch (e) { + this._isWriting = false; + console.error(e); if (callback instanceof Function) callback(); - }) + } }