-2

我编写的代码使用 util.promisify 和 async 来读取文件并将其显示在 localhost:3000 上。

但我想在不使用异步和承诺的情况下编写这段代码。

我做了以下尝试。然而,console.log ("running 3000") 被输出,但我的服务器进入了一个无限循环。

如何按计划运行代码?

异步代码(原始)

var http = require('http');
var fs = require('fs');
var util = require('util');
var readFile = util.promisify(fs.readFile);

var app = http.createServer(function(req , res){
  res.writeHead(200, {'Content-Type':'text/plain'});
  getData().then(data => {
    res.write(data);
    res.end();
  })

});

app.listen(3000);

async function getData(callback) {
  console.log("running 3000");
  return await readFile('./a.txt');
}

回调代码(重新打包)

    var http = require('http');
    var fs = require('fs');
    var util = require('util');

    var app = http.createServer(function(req , res){
      res.writeHead(200, {'Content-Type':'text/plain'});
      getData(data =>{
        res.write(data);
        res.end();
      })
    });

    app.listen(3000);

const getData = callback =>{
  console.log("running 3000");
  fs.readFile('./a.txt', (err, data) => {
      if (err) throw err;
      callback(data);
  )};
}
4

1 回答 1

1

这样的:

// var readFile = util.promisify(fs.readFile);


const getData = callback =>{
  console.log("running 3000");
  fs.readFile('./a.txt', (err, data) => {
      if (err) throw err;
      callback(data);
  };
}
于 2018-11-30T13:48:18.807 回答