NodeJs学习 -- 异步机制
来源:互联网 发布:阿里云华南 编辑:程序博客网 时间:2024/06/06 16:42
半懒的状态去写了只小爬虫,想把其他网站的视频爬下来传到其他服务器上,没想到搞了两天,Nodejs的异步机制真是让人又爱又恨。。
异步机制导致的问题
当前遇到nodejs的异步机制最大的问题是跟循环配合一起使用的时候,循环会一下并发所有的函数,举个例子
// 抓取单个视频并添加水印,上传数据库等操作function getId(id) { ... }// 抓取id为0 - 4000的视频for(var id = 0;id <= 4000;++ id) { getId(id);}
这样会一下子将几千个请求同时发送出去,造成后面的请求无响应,本地loading过高,服务器还可能会封ip等严重后果。
最终解决方案
最后的解决方案,用的是async.mapLimit
,
var ids = [];for(var id = 0;id <= 10000;id ++) { ids.push(id);}var async = require('async');async.mapLimit(ids,1, function(id,spCallback) { getId(id,spCallback);});
async的文档
(忍不住想吐槽下nodejs相关的文档,对新手一点也不友好。。或者是我我太弱了!?)
github:@caolan/async
官方文档:http://caolan.github.io/async/
mapLimit接口描述这里
阅读全文
0 0
- NodeJs学习 -- 异步机制
- 从nodejs看异步机制
- 深入浅出nodejs学习笔记-前三章 简介、模块机制、异步I/O
- Nodejs学习(六)--异步流控制
- nodejs 异步
- nodejs异步
- handler异步机制学习总结
- Node学习笔记——NodeJS的异步IO
- nodejs学习笔记二:闭包和异步编程
- 深入浅出nodejs学习笔记——异步编程
- 【JavaScript 学习--04】Nodejs异步流程控制Async
- 深入浅出nodejs学习笔记--第四章 异步编程
- Android异步机制AsyncTask的学习
- Handler(1)--异步消息机制简单学习
- 【java学习】线程和异步任务机制
- Android异步消息处理机制学习笔记
- Nodejs 异步框架async
- nodejs 异步优化
- 二进制 八进制 十进制 十六进制的转换
- NOIP2017_DAY1
- Zephyr OS之源码树结构
- 动态规划 java 矩阵连乘
- 初步了解Tomcat服务器(二)
- NodeJs学习 -- 异步机制
- 数组循环右移问题
- spring-task定时任务动态配置修改执行时间
- a 标签 超链接提示效果实现方案
- android初始篇一 Android系统架构
- jsp使用request获取post传递来的参数时出现中文乱码
- Source Insight基本使用和快捷键
- Python类、模块、包的区别
- 什么是BFC?