用 ES6 generator & Promise 写异步代码
来源:互联网 发布:青少年使用网络调查 编辑:程序博客网 时间:2024/05/16 10:23
测试文件
[root@nginx ~]# cat test_1.txt this is test_1.txt[root@nginx ~]# cat test_2.txtthis is test_2.txt
Promise 做异步控制
Promise用法和原理
var fs = require('fs');var readFile = function(fileName) { return new Promise(function(resolve, reject) { fs.readFile(fileName, function(error, data) { if (error) { reject(error); } resolve(data.toString()); }); }); }; readFile('test_1.txt').then(function(data) { console.log(data);});
输出
[root@nginx ~]# node --harmony g.js this is test_1.txt
generator 做异步控制
generator用法和原理
为了更清晰的 generator 执行顺序,测试代码
var func = function(time) { setTimeout(function() { console.log(time, " on"); result.next(true); }, time);};var gen = function * () { var f1 = yield func(3000); console.log('f1:', f1); var f2 = yield func(1000); console.log('f2:', f2);};var result = gen();result.next();console.log('end');
输出:
[root@nginx ~]# node --harmony g.js end3000 ' on'f1: true1000 ' on'f2: true
结合 Promise 和 generator 做异步控制
测试代码
var fs = require('fs');var wait = function(time) { return new Promise(function(resolve, reject) { setTimeout(function() { console.log('wait', time); resolve(true); }, time); });};var func = function* (time) { try { var res_1 = yield wait(3000); var res_2 = yield wait(1000); } catch (e) { console.log(e); }};var run = function(g) { var it = g(); function go(result) { if (result.done) { return result.value; } return result.value.then(function(value) { return go(it.next(value)); }, function(err) { return go(it.throw(value)); }); } go(it.next());};run(func);
输出:
[root@nginx ~]# node --harmony g.js wait 3000wait 1000
0 0
- 用 ES6 generator & Promise 写异步代码
- 5、ES6 === 异步 Promise Generator yield
- co核心代码剖析--promise与ES6 generator结合
- 异步javascript,callback、Promise?我们用Generator!
- ES6--Promise、Generator及async
- 【ES6学习】— (2)异步编程Generator函数和Promise对象简介
- 异步 promise +generator+async(未完成)
- js异步之promise(ES6)
- ES6--异步操作之Promise
- ES6总结--Promise 、Generator 、Async/Await
- ES6-Generator与异步操作
- JS异步之:回调/Promise/协程/Generator
- ES6 -- 异步编程神器:Promise对象
- ES6--异步操作之promise(续)
- 异步的解决方案-ES6的Promise
- ES6学习笔记(七)--Generator函数与Promise对象
- 小试ES6:异步编程之Generator
- ES6 -- 异步编程神器2:Generator
- hdu5386Cover六校(想法题)
- 换路定则
- 九度 Online Judge 算法 刷题 题目1058:反序输出
- [leetcode-136]Single Number(c)
- Leetcode -- Sort List
- 用 ES6 generator & Promise 写异步代码
- java1.8不能生成classes.dex
- hdu-5372 Segment Game(离散树状数组)(2015多校contest 7)
- MyEclipse 项目部署到tomcat时出现错误之——deploy
- dup,dup2,2>&1,tee用法
- OC - Method
- 自组织特征映射神经网络(SOFM)
- 九度 Online Judge 算法 刷题 题目1059:abc
- poj3070