node
node中的異步操作
Node采用V8引擎處理JavaScript腳本淌山,最大特點(diǎn)就是單線程運(yùn)行拯勉,一次只能運(yùn)行一個(gè)任務(wù)竟趾。這導(dǎo)致Node大量采用異步操作(asynchronous opertion),即任務(wù)不是馬上執(zhí)行宫峦,而是插在任務(wù)隊(duì)列的尾部岔帽,等到前面的任務(wù)運(yùn)行完后再執(zhí)行。
node為了執(zhí)行某一任務(wù)的后續(xù)操作导绷,利用回調(diào)函數(shù)來進(jìn)行獲取數(shù)據(jù)犀勒,但是上一步的操作可能會出現(xiàn)操作的錯(cuò)誤,此次操作為異步操作,不能利用try-catch語句來進(jìn)行錯(cuò)誤的拋出
為此幾乎大部分的異步回調(diào)函數(shù)的第一個(gè)參數(shù)都是一個(gè)error對象贾费,第二個(gè)參數(shù)為上一步獲取的值value
var fs = require('fs');
//利用異步操作的回調(diào)函數(shù)來拋出錯(cuò)誤
fs.readFile('./10.txt',function(err,data) {
if (err) throw err;
console.log(data.toString());
})
//利用try-catch來進(jìn)行拋出是無法拋出錯(cuò)誤的
try {
fs.readFile('./10.txt', function(err, data) {
console.log(data);
})
} catch(e) {
console.log(e);
}
throw錯(cuò)誤拋出.png
try-catch不會拋出錯(cuò)誤.png