promise方式:

// 对co模块的简单模拟

function run(gen){
var g = gen();
function next(data){
var result = g.next(data);
if (result.done) return result.value;
result.value.then(function(data){
next(data);
});
}
next();
} function a(aa){
return new Promise(function (resolve, reject){
setTimeout(function (){
console.log(aa);
resolve('dataA');
}, 1000);
});
} function b(bb){
return new Promise(function (resolve, reject){
setTimeout(function (){
console.log(bb);
resolve('dataB');
}, 1000);
});
} function *gen(){
console.log(yield a('aa'));
console.log(yield b('bb'));
} run(gen); /*
等一秒
aa
dataA
等一秒
bb
dataB
*/

thunk方式:

// 对co模块的简单模拟

function run(fn) {
var gen = fn();
function next(err, data) {
var result = gen.next(data);
if (result.done) return;
result.value(next);
}
next();
} var Thunk = function(fn){
return function(...args){
return function(callback){
return fn.call(this, ...args, callback);
};
};
}; function a(aa, cb){
setTimeout(function (){
console.log(aa);
cb(null, 'dataA');
}, 1000);
} function b(bb, cb){
setTimeout(function (){
console.log(bb);
cb(null, 'dataB');
}, 1000);
} var aThunk = Thunk(a);
var bThunk = Thunk(b); function *gen(){
console.log(yield aThunk('aa'));
console.log(yield bThunk('bb'));
} run(gen); /*
等一秒
aa
dataA
等一秒
bb
dataB
*/

最新文章

  1. 解决远程连接mysql很慢的方法(mysql_connect 打开连接慢)
  2. H20的题——[noip2003]银河英雄传(并查集)
  3. jquery移动端日期插件
  4. 自由软件VS开源软件
  5. RazorEngine在非MVC下的使用,以及使用自定义模板
  6. Ibatis 后台打印完整的sql语句
  7. jQuery实现 图片的局部放大效果
  8. (一)java多线程之Thread
  9. CVTE前端笔试编程题
  10. python使用上下文管理器实现sqlite3事务机制
  11. 洛谷P2617 Dynamic Rankings
  12. shell脚本--文件包含
  13. 由于html元素加载导致的问题
  14. anaconda查看删除增加镜像源
  15. ajax test
  16. OpenGL ES 光照模型之——漫反射光(RenderMonkey测试,地球日出效果)
  17. 记:ASP.NET Core开发时部署到IIS上出现HTTP Error 502.5 - Process Failure的解决方案
  18. Class.forName(String name)方法,到底会触发那个类加载器进行类加载行为?
  19. ZH奶酪:VirtualBox虚拟机与主机ping不通
  20. 也谈matlab中读取视频的一个重要函数mmreader

热门文章

  1. python实现查找算法
  2. 【转】用 Consul 来做服务注册与服务发现
  3. CentOs 6语言改成中文
  4. Oracle数据库 — DDL:数据定义语言
  5. Http 请求头 响应体 详解
  6. 45、[源码]-Spring容器创建-执行BeanFactoryPostProcessor
  7. [Dart] Manipulate Lists/Arrays in Dart
  8. LeetCode 246. Strobogrammatic Number
  9. php常量和变量之变量引用
  10. How To Add User To Sudoers On Debian 10 Buster