小さい例を使って、nodejsの非同期呼び出しの順序を分析します.
2733 ワード
同期と非同期の比較によって,nodejsはいくつかの非同期呼出しをどのように処理するかを見た.
下記はnodejsコードです.
forループの後、同期してファイルを読み込み、process.nextTick setoutを終了します.15.483 ms setImmedite非同期読み取りが完了しました.
まとめ:
コードは上から下まで順次実行されますが、非同期操作がある場合は、非同期操作をイベントキューに入れてイベントサイクルを行います.同期操作はメインスレッドで行いますが、同期読取ファイルはコードの最後に置かれていますが、結果的には事前に実行されます.同時に、非同期の
下記は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()
は、最も優先度が高く、優先的に実行される.