Nodejs里面module.exports 导出promise 结果存在缓存?

以下为read.js

var p_a_txt = new Promise(function (resolve, reject) {
    fs.readFile('./a.txt', function (err, data) {
        resolve(JSON.parse(data.toString())
    })
})
var p_b_txt = new Promise(function (resolve, reject) {
    fs.readFile('./b.txt',function (err, data) {
        resolve(JSON.parse(data.toString())
    })
})
module.exports={
     p_a_txt,
     p_b_txt
}

当我在需要的页面里面require的时候

const {p_a_txt,p_b_txt}=require('./read');
Promise.all([p_a_txt,p_b_txt]).then(function(results){
    console.log(results[0],results[1]) //正确得到a.txt和b.txt的里面的内容
})

但是如果修改a.txt或者b.txt的内容,运行程序得到内容仍然是修改之前的结果,只有结束程序重新运行才可以得到正确结果
求解...

阅读 1.7k
2 个回答

因为你导出的就是一个promise结果,它里面的内容是确定的,你应该把这两个promise封装成一个函数导出去,在引入的地方执行函数

因为你的 Promise 已经是 fulfilled 的状态了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题