【问题标题】:Node.js app reading cached json valueNode.js 应用程序读取缓存的 json 值
【发布时间】:2017-12-08 22:48:55
【问题描述】:

我最近开始制作 node.js 应用程序,并且已经到了需要读取刚刚更新但未成功的 JSON 值的地步,我尝试使用“睡眠”模块停止线程稍有延迟,但仍然没有运气。

我也没有很长时间使用 node.js,只有大约 5 个月。

var obj;

let sData = ('./session-data/data.json');
var contents = fs.readFile(sData, 'utf8', function(err, data){
  if (err) throw err;
  obj = JSON.parse(data);
});

// Below is getting input text from an inquirer question & logging it to the json but when console.log 'ed it outputs the last value from the key in the json
fs.writeFile('./session-data/data.json', `{\n "video": "` + answers.input + `"\n}`, function(err){
  if(err){
    return console.log(err);
  }
  console.log('Video: ' + obj.video)
});

【问题讨论】:

  • 可以分享代码吗?

标签: javascript json node.js asynchronous


【解决方案1】:

没有代码,没有错误,也没有预期的结果,很难用任何具体的解决方案来回答。阅读问题后我只能说,无论您的问题是什么,您都不应该为此使用睡眠模块。来自文档:“这些调用将通过停止 Node.js 的事件循环来阻止所有 JavaScript 的执行!”你永远不想用你描述的东西那样做。

大概你的“JSON”(你可能指的是一个对象,而不是 JSON,但我在这里猜想)是由一些操作更新的,在一些回调或事件处理程序内部,或者由于一个承诺解决等。您应该监听相关事件,而不是引入特定的延迟,添加一个 Promise 解析处理程序,添加一个回调等,您可以知道值何时更改并需要采取行动。

引入随机延迟永远不会帮助您解决这个问题,而引入阻塞整个事件循环的延迟只会造成麻烦。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-02
    • 2014-12-11
    • 1970-01-01
    • 2019-07-04
    • 2017-08-17
    • 2021-08-17
    • 2017-09-25
    • 1970-01-01
    相关资源
    最近更新 更多