读<了不起的Node.js>-04.事件轮询,非阻塞IO,V8

2018-08-04  本文已影响0人  在路上的海贼

阻塞和非阻塞IO

阻塞

//事件轮询
console.log("hello");

setTimeout(() => {
    console.log('world');
}, 4000);

console.log('bye');

单线程的世界

let start = Date.now();

setTimeout(function () {
    console.log(Date.now() -start);

    for (let i = 0 ; i<100000000;i++){

    }
},1000);

setTimeout(function () {
    console.log(Date.now() - start);
}, 2000);

错误处理

let http = require('http');
http.creatServer(function(){
    thow new Error("错误不会被捕捉")
}).listen(3000)
let http = require('http');


process.on('uncaughtException', function (err) {
    console.log(err);
    process.exit(1);
});


http.createServer(function () {
    throw new Error("错误跳出来了");
}).listen(8080);

let fs = require('fs');

fs.readFile('', function (err, data) {
    if (err) return console.error(err);
    console.log(data);
});

堆栈追踪

function c() {
    b();

}

function b (){
    a();
}

function a() {
    throw new Error("错误出来额")
}

c();

/*
* E:\TheGreatNodeJs\day01\12.堆栈追踪.js:11
    throw new Error("错误出来额")
    ^

Error: 错误出来额
    at a (E:\TheGreatNodeJs\day01\12.堆栈追踪.js:11:11)
    at b (E:\TheGreatNodeJs\day01\12.堆栈追踪.js:7:5)
    at c (E:\TheGreatNodeJs\day01\12.堆栈追踪.js:2:5)
    at Object.<anonymous> (E:\TheGreatNodeJs\day01\12.堆栈追踪.js:14:1)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Function.Module.runMain (module.js:693:10)
*/
function c() {
    b();

}

function b (){
    a();
}

function a() {
    setTimeout(function () {

        throw new Error("错误出来额")
    },10)
}

c();

/*
* E:\TheGreatNodeJs\day01\13.堆栈追踪(事件轮询.js:13
        throw new Error("错误出来额")
        ^

Error: 错误出来额
    at Timeout._onTimeout (E:\TheGreatNodeJs\day01\13.堆栈追踪(事件轮询.js:13:15)
    at ontimeout (timers.js:498:11)
    at tryOnTimeout (timers.js:323:5)
    at Timer.listOnTimeout (timers.js:290:5)
* */
上一篇 下一篇

猜你喜欢

热点阅读