js使用generator函数同步执行ajax任务


Posted in Javascript onSeptember 05, 2017

本文实例为大家分享了js使用generator函数同步执行ajax任务的具体代码,供大家参考,具体内容如下

function request(url, callback) {
  fetch(url, {mode: 'cors', credentials: 'include', headers: new Headers({ 'X-Requested-With': 'XMLHttpRequest' })})
  .then(response => response.text())
  .then(text => {
    console.log(url);
    console.log(text);
    callback(text);
  })
  .catch((e) => console.log(e));
}

var iterator = null;
function getData(src){
  request(src, function(response){
    iterator.next(JSON.parse(response));
  })
}

function getTpl(src){
  request(src, function(response){
    iterator.next(response);
  });
}

// 同步任务
function render(data, tpl){
  for(var i in data) {
    tpl = tpl.replace("${"+i+"}", data[i]);
  }
  return tpl;
}

// 主逻辑
var getArticles = function* (src){
  console.log('begin')
  var data = yield getData(src)
  var tpl = yield getTpl(data.tpl)
  var res = render(data, tpl)
  console.log(res)
}

iterator = getArticles('data.json')
// 开始执行
iterator.next()
// 异步任务模型

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript小数计算出现近似值的解决办法
Feb 06 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
Sep 27 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
Feb 26 Javascript
jQuery实现下滑菜单导航效果代码
Aug 25 Javascript
JS与HTML结合使用marquee标签实现无缝滚动效果代码
Jul 05 Javascript
Bootstrap基本样式学习笔记之表单(3)
Dec 07 Javascript
浅谈JS中的反柯里化( uncurrying)
Aug 17 Javascript
jQuery实现的简单日历组件定义与用法示例
Dec 24 jQuery
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
May 09 Javascript
微信小程序制作扭蛋机代码实例
Sep 24 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
Apr 10 Javascript
jQuery AJAX应用实例总结
May 19 jQuery
vue如何使用 Slot 分发内容实例详解
Sep 05 #Javascript
详解Vue2.0 事件派发与接收
Sep 05 #Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
Sep 05 #Javascript
jQuery实现注册会员时密码强度提示信息功能示例
Sep 05 #jQuery
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
Sep 05 #Javascript
详解vue-cli本地环境API代理设置和解决跨域
Sep 05 #Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
Sep 05 #Javascript
You might like
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
2015/05/13 PHP
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
javascript实现鼠标放上后下边对应内容变换的效果
2015/08/06 Javascript
javascript 数组的正态分布排序的问题
2016/07/31 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
如何使用Javascript中的this关键字
2020/05/28 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
python实现获取序列中最小的几个元素
2014/09/25 Python
介绍Python中的fabs()方法的使用
2015/05/14 Python
在Lighttpd服务器中运行Django应用的方法
2015/07/22 Python
Python基于time模块求程序运行时间的方法
2017/09/18 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
Django分组聚合查询实例分享
2020/04/29 Python
如何写python的配置文件
2020/06/07 Python
浅谈Keras中shuffle和validation_split的顺序
2020/06/19 Python
基于Python组装jmx并调用JMeter实现压力测试
2020/11/03 Python
css3动画效果小结(推荐)
2016/07/25 HTML / CSS
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
navabi英国:设计师大码女装
2019/06/25 全球购物
电气工程师岗位职责
2014/01/01 职场文书
三年大学生活自我鉴定
2014/01/21 职场文书
农贸市场管理制度
2014/01/31 职场文书
《天安门广场》教学反思
2014/04/23 职场文书
教师纪念9.18事件演讲稿范文
2014/09/14 职场文书
聘用合同范本
2015/09/21 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
JS ES6异步解决方案
2021/04/29 Javascript
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
RestTemplate如何通过HTTP Basic Auth认证示例说明
2022/03/17 Java/Android