循环里面嵌套一个异步请求,所有循环执行完毕后再返回请求的数据
来源:互联网 发布:vs2013能做php开发吗 编辑:程序博客网 时间:2024/05/30 04:44
场景介绍:
使用es6实现爬虫,先遍历完列表,然后循环列表的根据url去查询每篇文章的详细内容,最后将所有爬取完的数据写入数据库(只写一次,避免数据库频繁的打开的关闭,影响性能)。
原始实现方式和痛点分析:
var list =["url1","url2","url3",.....];
for(let i = 0;i< list.length;i++){
$.ajax(list[i],function(data){
console.log("success");
//data是执行成功后获取到的url1对应的文章详细内容
//第一次查询完成后就必须把该数据写到数据库中,这样太影响性能
dataBase.writeDB(data);
},"json")
}
思考:
能否在for循环完成后将所有文章的详细内容返回,然后统一写进数据库?
实现一个公共类:
iteratorArr: function(arr, promiseCallback) {
var it = arr[Symbol.iterator]();
var list = [];
return x(it.next());
function x(item) {
if (item.done) {
return Promise.resolve(list);
}
return promiseCallback(item.value).then(function(value) {
return list.push(value);
}).then(function() {
return x(it.next());
}).catch(Promise.reject)
}
}
测试:
$("#test").click(function(){
var arr = [1,2,3,4,5];
//调用上面的公共类
helper.iteratorArr(arr,promiseCallBack).then(function(list){
console.log("_----------------------------------0");
console.log(list);
});
})
function promiseCallBack(){
return new Promise((resolve,reject)=>{
setTimeout(resolve,2000,'done');
})
}
结果:
- 循环里面嵌套一个异步请求,所有循环执行完毕后再返回请求的数据
- ajax请求返回的Json格式数据循环输出
- javascript XMLHttpRequest 循环,异步请求
- spring mvc中返回ModelAndView后执行ajax异步请求
- Mootools循环执行Ajax请求
- ios循环请求数据的正确方法
- 异步请求没有数据返回
- list集合转换成json数据,ajax请求返回json数据,再通过循环显示出来
- 17Jquer定时刷新以及循环遍历功能和ajax 的异步请求数据
- 关于NSURLSession异步请求数据后执行操作问题
- 循环请求数据时,返回的结果没有按照顺序显示的解决方法
- $.Deferred(),for循环内异步请求问题的解决办法
- extjs 循环执行多个异步请求时,参数和后台以及相关问题和衍生问题的处理
- 【前端】关于在for循环里面执行异步脚本导致变量都采用最后的一个变量问题
- 关于rxjava的循环请求
- 关于vue.js遇到的坑-发起jquery请求时,应该在请求之前执行的代码被等待到请求完毕后才执行
- jquery的ajax异步请求接收返回json数据实例
- 《项目——网络音乐播放器》——网络请求之for循环内嵌套的try...catch...里面放break
- 用svg制作圆形进度条动画效果 js 并且能监听滚动条百分比
- 关于WebView不能加载网页,配置,兼容适配问题
- tomcat报错org.springframework.web.context.ContextLoaderListener
- C#学习笔记(1)
- 软件测试过程
- 循环里面嵌套一个异步请求,所有循环执行完毕后再返回请求的数据
- spring配置文件根据环境选取
- Java6+Servlet+tomcat发布HelloWord
- linux zookeeper3.4.9集群搭建图文详解
- postgis初探
- 数据库<7>
- 服务器上安装tmux
- RequireJs初步了解和使用
- createDirectStream 实现offset管理