使用callback函数时节点js中响应对象的作用域

我有一个函数onRequest(request,response),它包含一个callback函数。 当我尝试使用响应对象(即response.write())在callback函数中打印数据时,它不打印。 但相同的数据打印在控制台上使用console.log()请帮助为什么response.write()不起作用。

var http = require("http"); var _mysql = require("mysql"); function onRequest(request, response) { console.log("Request received."); response.writeHead(200, { "Content-Type": "text/plain" }); response.write("Hello World"); var _mysql = require('mysql'); var HOST = 'localhost'; var PORT = 3306; var MYSQL_USER = 'root'; var MYSQL_PASS = 'root'; var DATABASE = 'library_management'; var TABLE = 'book_details'; var mysql = _mysql.createConnection({ host: HOST, port: PORT, user: MYSQL_USER, password: MYSQL_PASS, }); mysql.query('use ' + DATABASE); mysql.query('select * from ' + TABLE + ' where price < 1212', function(err, result, fields) { if (err) throw err; else { console.log('Books less than 1212'); for (var i in result) { var book = result[i]; response.write("Hello"); console.log(book.title + ':' + book.price); //above is working response.write(book.title + ':' + book.price); //above is not working...why? } } }); response.end(); } http.createServer(onRequest).listen(8888); console.log("Server has started."); 

很可能你的回应已经end

尝试

 mysql.query('select * from ' + TABLE + ' where price < 1212', function(err, result, fields) { if (err) throw err; else { console.log('Books less than 1212'); for (var i in result) { var book = result[i]; response.write("Hello"); console.log(book.title + ':' + book.price); //above is working response.write(book.title + ':' + book.price); //above is not working...why? } response.end();//don't end response until data is written } });