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 相关文章推荐
Maps Javascript
Jan 22 Javascript
document.onreadystatechange事件的用法分析
Oct 17 Javascript
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
Feb 16 Javascript
jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
Oct 29 Javascript
JS的事件绑定深入认识
Jun 26 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
Feb 27 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
Sep 28 Javascript
浅谈Angularjs link和compile的使用区别
Oct 21 Javascript
JS中双击和单击事件冲突的解决方法
Apr 09 Javascript
vue环形进度条组件实例应用
Oct 10 Javascript
JS获取表格视图所选行号的ids过程解析
Feb 21 Javascript
JavaScript碰撞检测原理及其实现代码
Mar 12 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下清空字符串中的HTML标签的代码
2010/09/06 PHP
PHP中include与require使用方法区别详解
2013/10/19 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
php中Snoopy类用法实例
2015/06/19 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
javascript 三种方法实现获得和设置以及移除元素属性
2013/03/20 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
vue-router路由懒加载和权限控制详解
2017/12/13 Javascript
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
[06:45]DOTA2卡尔工作室 英雄介绍幻影长矛手篇
2013/07/12 DOTA
跟老齐学Python之??碌某?? target=
2014/09/12 Python
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
Python使用metaclass实现Singleton模式的方法
2015/05/05 Python
python读取oracle函数返回值
2016/07/18 Python
python实现教务管理系统
2018/03/12 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
5款实用的python 工具推荐
2020/10/13 Python
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
幼教简历自我评价
2014/01/28 职场文书
优质服务口号
2014/06/11 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
2016七一建党节慰问信
2015/11/30 职场文书
python Django框架快速入门教程(后台管理)
2021/07/21 Python
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android