为什么此示例代码中不需要readSync?

时间:2017-10-30 10:50:57

标签: node.js

在本教程中http://www.dotnetcurry.com/nodejs/1270/read-html-file-and-send-html-response-nodejs

    //1.
    var http = require('http');
    var fs = require('fs');
    //2.
    var server = http.createServer(function (req, resp) {
        //3.
        if (req.url === "/create") {
            fs.readFile("AppPages/MyPage.html", function (error, pgResp) {
                if (error) {
                    resp.writeHead(404);
                    resp.write('Contents you are looking are Not Found');
                } else {
                    resp.writeHead(200, { 'Content-Type': 'text/html' });
                    resp.write(pgResp);
                }

                resp.end();
            });
        } else {
            //4.
            resp.writeHead(200, { 'Content-Type': 'text/html' });
            resp.write('<h1>Product Manaager</h1><br /><br />To create product please enter: ' + req.url);
            resp.end();
        }
    });
    //5.
    server.listen(5050);

我不明白,因为readFile是异步的,为什么它会在页面需要很长时间加载的情况下可靠地工作?那么readSync是必要的还是允许等待页面完全读取的东西,即使文件非常大?

1 个答案:

答案 0 :(得分:1)

它工作正常,因为只有在读取文件时才会执行readFile参数中定义的函数(此函数称为回调函数btw)。