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 使用手册(一)
Sep 23 Javascript
jQuery操作 input type=checkbox的实现代码
Jun 14 Javascript
jQuery编辑器KindEditor4.1.4代码高亮显示设置教程
Mar 01 Javascript
js select option对象小结
Dec 20 Javascript
javascript页面渲染速度测试脚本分享
Apr 15 Javascript
Javascript判断图片尺寸大小实例分析
Jun 16 Javascript
JS图片等比例缩放方法完整示例
Aug 03 Javascript
js原生代码实现轮播图的实例讲解
Jul 28 Javascript
js+html获取系统当前时间
Nov 10 Javascript
vue弹出框组件封装实例代码
Oct 31 Javascript
JavaScript This指向问题详解
Nov 25 Javascript
vue v-model的用法解析
Oct 19 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
php access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
PHP下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
10个对初学者非常有用的PHP技巧
2016/04/06 PHP
JavaScript 学习笔记(十二) dom
2010/01/21 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
vue项目总结之文件夹结构配置详解
2017/12/13 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
微信公众号平台接口开发 获取微信服务器IP地址方法解析
2019/08/14 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
python中的set实现不重复的排序原理
2018/01/24 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
python groupby 函数 as_index详解
2019/12/16 Python
Python输出指定字符串的方法
2020/02/06 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
英国领先的野生鸟类食品供应商:GardenBird
2018/08/09 全球购物
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
计算机专业毕业生自荐信
2013/12/31 职场文书
在校学生职业规划范文
2014/01/08 职场文书
决定成败的关键——创业计划书
2014/01/24 职场文书
《火烧云》教学反思
2014/04/12 职场文书
临床专业自荐信
2014/06/22 职场文书
公安机关纪律作风整顿剖析
2014/10/10 职场文书
工作感想范文
2015/08/07 职场文书
导游词之昭君岛
2020/01/17 职场文书
vue+echarts实现多条折线图
2022/03/21 Vue.js