Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用nodeJS将数据写入JSON文件花费的时间太长_Javascript_Node.js_Json - Fatal编程技术网

Javascript 使用nodeJS将数据写入JSON文件花费的时间太长

Javascript 使用nodeJS将数据写入JSON文件花费的时间太长,javascript,node.js,json,Javascript,Node.js,Json,我正在创建一个计算元素点击次数的函数,并将它们放入JSON文件中 const fs = require('fs'); const file = fs.readFileSync('public/js/count.json'); const Words = JSON.parse(file); const express = require('express'); const app = express(); app.listen(process.env.PORT || 3000, () =>

我正在创建一个计算元素点击次数的函数,并将它们放入JSON文件中

const fs = require('fs');
const file = fs.readFileSync('public/js/count.json');
const Words = JSON.parse(file);

const express = require('express');
const app = express();
app.listen(process.env.PORT || 3000, () => console.log('we are listeining'));
app.use(express.static('public'));
app.use(express.json({ limit : '1mb' })); 

app.get('/add/:word', addWord);

function addWord(request, response) {
  var data = request.params;
  var word = data.word;
  var reply;
  var found = false;
  for (i = 0; i < Words.length; i++){
    if (Words[i].type == word){
      Words[i].count++;
      found = true;
      break;
    }
  }

if (!found) {
  Words.push({"type": word , "count": 1});
}

  var x = JSON.stringify(Words, null, 2);
  fs.writeFile('public/js/count.json', x, finished);

  function finished(){
    console.log('Yay')
  }

    /* 
    console.log(Words[word]); */

/*     response.send(reply); */
  }

响应时间太长,有时会导致请求超时,是否有更快的方法来达到完全相同的目的

您没有在完成的处理程序中编写响应。这使得每个请求只能通过超时来结束

在完成的函数中,在末尾添加response.end


您可以通过确保请求从您的服务器接收到200响应而不是超时来验证此操作是否有效。

thnx,这有很大帮助,有一个函数将计数呈现给某个DOM元素``异步函数renderCountclicked{let response=await fetch'js/count.json';let data=await response.json;console.logdata;for i=0;iasync function counter(elemid){ let response = await fetch("/add/"+elemid); }