专业的编程技术博客社区

网站首页 > 博客文章 正文

nodejs中的那些坑(nodejs详解)

baijin 2024-08-22 09:17:55 博客文章 3 ℃ 0 评论

nodejs的优点?

  1. 它是一个Javascript运行环境

  2. 依赖于Chrome V8引擎进行代码解释

  3. 事件驱动

  4. 事件驱动

  5. 单线程、单进程

nodejs适合什么样的业务?

  1. 高并发

  2. I/O密集性业务

nodejs不适合什么样的业务?

  1. CPU密集型,长期占用cpu,I/O困难

  2. 只支持单核CPU,不能充分利用CPU(pm2也可解决)

我的使用过程中的坑

嵌套回调大坑

//读取多个文件的内容合并到一个总的文件,如果现在两个文件还可以理解,但是如果是10个文件,一路嵌套无法维护
fs.readFile('/etc/passwd', function (err, data) { 
 if (err) throw err;
fs.readFile('/etc/passwd2', function (err, data2) { if (err) throw err; fs.readFile('/etc/passwd2', function (err, data2) { if (err) throw err; }); });
});

try catch中callback执行多次

首先这里错误抓取不到

如果此try中加入callback,一旦外层抛出错误,此处的异常提示不正常,并且callback会执行两次的错误。

pm2和schedule

pm2可以合理利用服务器的cpu,我们一个定时服务用node-schedule模块,服务用pm2启动并且启用了4核,导致服务跑了4次

解决遇到的坑

  1. 嵌套回调async

  • 集合: Collections

  • 流程控制: Control Flow

  • 工具类: Utils

集合:

  • each如果想对同一个集合中的所有元素都执行同一个异步操作。

  • sortBy: 对集合内的元素进行排序,依据每个元素进行某异步操作后产生的值,从小到大排序。

  • concat: 将多个异步操作的结果合并为一个数组。

流程控制:

  • series: 串行执行,一个函数数组中的每个函数,每一个函数执行完成之后才能执行下一个函数。

  • waterfall: 按顺序依次执行一组函数。每个函数产生的值,都将传给下一个。

  • auto: 用来处理有依赖关系的多个任务的执行。

  • parallel: 并行执行多个函数,每个函数都是立即执行,不需要等待其它函数先执行。

工具类:

  • memoize: 让某一个函数在内存中缓存它的计算结果。

  • log: 执行某异步函数,并记录它的返回值,日志输出。

2、try catch 中间件express-domain-middleware

process.on('uncaughtException', function (err) {
console.error(err);
});

nodejs 的那些坑

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表