小さい例を使って、nodejsの非同期呼び出しの順序を分析します.

2733 ワード

同期と非同期の比較によって,nodejsはいくつかの非同期呼出しをどのように処理するかを見た.
下記はnodejsコードです.
'use strict';
const fs = require('fs');

//     
console.time('setout');
setTimeout(function(){
  console.timeEnd('setout');
},0);
setImmediate(function(){
    console.log('setImmediate');
})
process.nextTick(function(){
    console.log('process.nextTick');
})

//        
for(var i=0;i<10000000;i++){}
console.log('for    ');

//       
fs.readFile('./1.txt','utf8',function(err,data){
    if(err){
        return console.log('     ');
    }
    fs.writeFile('./11.txt',data,'utf8',function(err){
        if(err){
             return console.log('     ');
        }
        console.log('      ');
    })
})

//       
fs.readFileSync('./1.txt');
console.log('        ');
その実行結果は:
forループの後、同期してファイルを読み込み、process.nextTick setoutを終了します.15.483 ms setImmedite非同期読み取りが完了しました.
まとめ:
コードは上から下まで順次実行されますが、非同期操作がある場合は、非同期操作をイベントキューに入れてイベントサイクルを行います.同期操作はメインスレッドで行いますが、同期読取ファイルはコードの最後に置かれていますが、結果的には事前に実行されます.同時に、非同期のprocess.nextTick()は、最も優先度が高く、優先的に実行される.