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 相关文章推荐
JS滚轮事件onmousewheel使用介绍
Nov 01 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
Sep 20 Javascript
使用Curl命令查看请求响应时间方法
Nov 04 Javascript
EasyUI学习之Combobox下拉列表(1)
Dec 29 Javascript
很棒的vue弹窗组件
May 24 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
Dec 28 Javascript
Express下采用bcryptjs进行密码加密的方法
Feb 07 Javascript
jQuery获取随机颜色的实例代码
May 21 jQuery
vue+springboot实现项目的CORS跨域请求
Sep 05 Javascript
Vue实现购物车详情页面的方法
Aug 20 Javascript
微信小程序页面调用自定义组件内的事件详解
Sep 12 Javascript
javascript实现点击星星小游戏
Dec 24 Javascript
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
Terran魔法科技
2020/03/14 星际争霸
php的urlencode()URL编码函数浅析
2011/08/09 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
2013/06/25 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
2017/02/23 PHP
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
js 显示base64编码的二进制流网页图片
2014/04/04 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
2014/06/12 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
windows实现npm和cnpm安装步骤
2019/10/24 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
[01:34]完美“圣”典宣传片震撼发布,12.17与你不见不散
2016/12/16 DOTA
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
python实现中文分词FMM算法实例
2015/07/10 Python
Python基于socket模块实现UDP通信功能示例
2018/04/10 Python
Linux 修改Python命令的方法示例
2018/12/03 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
python 爬虫 实现增量去重和定时爬取实例
2020/02/28 Python
如果重写了对象的equals()方法,需要考虑什么
2014/11/02 面试题
办公室文书岗位职责
2013/12/16 职场文书
婚内分居协议书范文
2014/11/26 职场文书
财政局个人年终总结
2015/03/03 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
win10安装配置nginx的过程
2021/03/31 Servers
MySQL单表千万级数据处理的思路分享
2021/06/05 MySQL
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android
python实现局部图像放大
2021/11/17 Python