Q的深层嵌套

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


				
时间: 2024-10-23 14:05:57

Q的深层嵌套的相关文章

利用Idea重构功能及Java8语法特性——优化深层嵌套代码

当遇到深层嵌套代码,如for,if,lambda表达式或内部类及这些代码的组合,这时我们可以通过Java 8的语法特性来进行优化. 下面的代码是一个嵌套循环的示例. public MappedField getMappedField(final String storedName) { for (final MappedField mf : persistenceFields) { for (final String n : mf.getLoadNames()) { if (storedName

js 对象的深层嵌套函数对对象属性的访问

var obj = { foo: "hi", f1: function() { function f2(that) { console.log(that); } f2(this.foo); } }; obj.f1(); // hi Function.prototype.foo = "hello"; Function.prototype.f = function() { var that = this; setTimeout(function(that){ conso

如何在深层嵌套ngRepeat中获取不同层级的$index

<ul class="list-group" ng-repeat="item in vm.appData" ng-init="outerIndex = $index"> <h3>{{item.name}}<span class="outer-index">outerIndex:{{outerIndex}}</span></h3> <h4>{{item.au

Angular中ui-router实现路由嵌套案例

学习 ui-router 资料整理 对于Angular内置的路由是单路由视图,ui-router可以实现路由嵌套.后面将会有一个案例概括前面所有资料整理 学习 ui-router - 管理状态  http://bubkoo.com/2014/01/01/angular/ui-router/guide/state-manager/ 学习 ui-router - 状态嵌套和视图嵌套  http://bubkoo.com/2014/01/01/angular/ui-router/guide/neste

从一个表达式字符串中找到最深层圆括号内的表达式

编程实现:从一个表达式字符串中找到最深层圆括号内的表达式. 如:从表达式 x+(y*z)+(m-(3+4)) 中找到3+4 .如果由多个表达式具有相同的最深深度则只需要给出其中一个.备注:算数表达式本身都是正确的,不要考虑括号不配对等错误表达式的处理. /* * 编程实现,从一个表达式字符串中找到最深层圆括号内的表达式. * 如: 从表达式 x+(y*z)+(m-(3+4))中找到3+4. 如果由多个表达式具有相同的最深深度则只需要给出其中一个. * 备注: 算数表达式本身都是正确的,不要考虑括

对Verilog 初学者比较有用的整理(转自它处)

对Verilog 初学者比较有用的整理(转自它处) ******************************************************************************************************************** *作者: Ian11122840    时间: 2010-9-27 09:04                                                                   

JavaScript Promise启示录

本篇,主要普及promise的用法. 一直以来,JavaScript处理异步都是以callback的方式,在前端开发领域callback机制几乎深入人心.在设计API的时候,不管是浏览器厂商还是SDK开发商亦或是各种类库的作者,基本上都已经遵循着callback的套路. 近几年随着JavaScript开发模式的逐渐成熟,CommonJS规范顺势而生,其中就包括提出了Promise规范,Promise完全改变了js异步编程的写法,让异步编程变得十分的易于理解. 在callback的模型里边,我们假

9.14

1. $(this)[0] === this;  $('#myDiv')[0] === document.getElementById('myDiv') 用$(this)获取懂啊的是jquery对象 2. angular里面的service都是单例的. 3. $q是angular中的一个服务,他是对promise异步编程的一个简化实现版. 4. angualr原生的路由是不能深层嵌套的.所以采用UI-router.可以多层次嵌套. 5. 前端路由的基本原理.哈希#也就是锚点.html5的新的hi

JavaScript进阶之路——认识和使用Promise,重构你的Js代码

一转眼,这2015年上半年就过去了,差不多一个月没有写博客了,"罪过罪过"啊~~.进入了七月份,也就意味着我们上半年苦逼的单身生活结束了,从此刻起,我们要打起十二分的精神,开始下半年的单身生活.大家一起加油~~ 一直以来,JavaScript处理异步都是以callback的方式,在前端开发领域callback机制几乎深入人心.在设计API的时候,不管是浏览器厂商还是SDK开发商亦或是各种类库的作者,基本上都已经遵循着callback的套路.近几年随着JavaScript开发模式的逐渐成