Q的深层嵌套 - jay

发布时间:2016-12-31 7:13:27编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Q的深层嵌套 - jay",主要涉及到Q的深层嵌套 - jay方面的内容,对于Q的深层嵌套 - jay感兴趣的同学可以参考一下。

1.如果将异步方法用同步的方式执行,try catch能捕获到错误,同时不会阻塞到主进程,因此console.log(3333)能执行.

var fs = require('fs');

try { 

   var data = fs.readFileSync('sample.txt', 'utf-8'); 

   console.log(data);

} catch (err) { 

// 出错了   

console.log(err);}console.log(3333);



2.对于某些库不带回调函数,但是又是异步方法,这就很难捕捉错误了var d = domain.create();

d.name = 'd1';

process.on('uncaughtException', function (err) {
console.log('Caught exception: ' + err);
});


d.on('error',function(err){
console.log('domain捕获到错误',err);
});

d.run(function() {
console.log(1);
var fs = require('fs');
fs.readFile('sample.txt', 'utf-8');
console.log(2);
}
);

console.log(3);
结果:异步的方法,如果没有回调函数就会在运行完之后抛出错误,其后续的程序都会执行,而用domain捕获的同步方法,则会将进程阻塞,后续方法不会执行

1
2
3
domain捕获到错误 { [Error: ENOENT: no such file or directory, open 'sample.txt']
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: 'sample.txt',
domain:
Domain {
domain: null,
_events: { error: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
members: [],
name: 'd1' },
domainThrown: true }

var d = domain.create();
d.name = 'd1';

process.on('uncaughtException', function (err) {
console.log('Caught exception: ' + err);
});


d.on('error',function(err){
console.log('domain捕获到错误',err);
});

d.run(function() {
console.log(1);
var fs = require('fs');
fs.readFileSync('sample.txt', 'utf-8');
console.log(2);
}
);

console.log(3333);
结果:同步的方法用domain,一旦有错误就会阻塞进程.

1
domain捕获到错误 { [Error: ENOENT: no such file or directory, open 'sample.txt']
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: 'sample.txt',
domain:
Domain {
domain: null,
_events: { error: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
members: [],
name: 'd1' },
domainThrown: true }

Process finished with exit code 0





上一篇:Linux indent
下一篇:使用百度地图API产生指定范围的随机点

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款