Heim > Fragen und Antworten > Hauptteil
var http = require('http');
http.createServer(function(req,res){
res.writeHeader(200, {'Content-Type' : 'text/html ; charset=utf-8'})
if(req.url !== '/favicon.ico'){
console.time('test');
var c=1,a=2,b=3;
res.write(show()+''+c);
c=a+b;
res.write('<br />')
res.write(c+'<br />');
console.timeEnd('test');
res.end()
}
}).listen(8000)
function show(){
var str='';
for(var i=0;i<10000;i++){
str+=i*i*i*i+'<br />';
}
return str
}
console.log('server is running at http://127.0.0.1:8000')
Die letzten beiden Zeilen sind 1 und 5!
Das Buch besagt, dass das http.ServerResponse-Objekt einen stream.Writable (beschreibbaren Stream) implementiert. Beschreibbare Streams sind jedoch im Allgemeinen asynchron (z. B. fs write stream, zlib stream, sub-process stdin), was perfekt für das ereignisgesteuerte Servicemodell ist. Was ich nun getestet habe, ist die res.write-Synchronisation, was bedeutet, dass dieser Rückruf ausgeführt werden muss, bevor der nächste Rückruf in der Ereigniswarteschlange ausgeführt werden kann?
function(req,res) ist der Rückruf des Ruquest-Ereignisses. Das heißt, wenn Sie Zehntausende gleichzeitiger Anfragen bearbeiten, müssen Sie Zehntausende von function(req,res) ausführen, auch wenn es keine gibt CPU-intensive Anwendungen in function(req,res) Ein wenig summiert sich das nicht, dass es zu Verzögerungen beim Benutzerzugriff kommt? Aber Node ist sehr gut im Umgang mit intensivem Io? Habe ich falsch gedacht?
Ich habe diese Show-Funktion absichtlich erstellt, da js Single-Threaded ist und nicht gut für die Verarbeitung CPU-intensiver Geschäfte geeignet ist. Daher dauert res.write(show()+''+c) länger und sieht besser aus ? Wenn res.write asynchron ist, wird c=a+b zuerst ausgeführt; dann muss c 5;
sein伊谢尔伦2017-05-31 10:40:35
node 的优势是指,能处理高并发,是可以应付大量的请求,但是处理respone.write 或者 查询数据库的操作 是另外的线程处理的,就好像一个餐厅一样,有分厨师还有一个服务员(单线程),不像一般web服务框架只有一个厨师而且要兼职服务员,
所以你上面的情况是不是密集的io,而像是,餐厅的厨师忙不过来处理你的菜,导致服务员上菜慢。