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 相关文章推荐
基于jquery的超简单上下翻
Apr 20 Javascript
Javascript对象属性方法汇总
Nov 21 Javascript
jquery判断类型是不是number类型的实例代码
Oct 07 Javascript
利用Javascript实现简单的转盘抽奖
Feb 13 Javascript
数组Array的排序sort方法
Feb 17 Javascript
Bootstrap modal 多弹窗之叠加引起的滚动条遮罩阴影问题
Feb 27 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
Jul 22 jQuery
vue中实现左右联动的效果
Jun 22 Javascript
使用webpack打包后的vue项目如何正确运行(express)
Oct 26 Javascript
JS计算斐波拉切代码实例
Sep 12 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
Jan 07 Javascript
vue+spring boot实现校验码功能
May 27 Vue.js
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进行批量任务处理不超时的解决方法
2016/07/11 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
JavaScript中的作用域链和闭包
2012/06/30 Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
2013/05/08 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
javascript 回到顶部效果的实现代码
2014/02/17 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
bootstrap table分页模板和获取表中的ID方法
2017/01/10 Javascript
Javascript 严格模式use strict详解
2017/09/16 Javascript
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
2018/08/06 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
Python易忽视知识点小结
2015/05/25 Python
在Django的上下文中设置变量的方法
2015/07/20 Python
python使用Pycharm创建一个Django项目
2018/03/05 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
Django的models模型的具体使用
2019/07/15 Python
django框架使用方法详解
2019/07/18 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
Pytorch实现WGAN用于动漫头像生成
2021/03/04 Python
html5服务器推送_动力节点Java学院整理
2017/07/12 HTML / CSS
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
Carmen Sol官网:购买果冻鞋、手袋和配件
2021/01/01 全球购物
测绘工程个人的自我评价
2013/11/23 职场文书
银行求职自荐信
2014/06/30 职场文书