
其实就是常规的 generator 用法,也是 co , koa 的基本原理。
……我折腾了一个 57 字符的 简易 实现。
在 Console 里运行一发试试吧!
var d=(f,t=f(),r=t.next())=>r.done||setTimeout(d,r.value,f,t); // <- source code d(function *() { // <- wrapper // <- magic console.log('foo'); // output 'foo' yield 1000; // delay 1 sec console.log('bar'); // output 'bar' yield 1000; // delay 1 sec console.log('baz'); // output 'baz' }); 1 breeswish 2016-06-09 20:45:25 +08:00 都上 generator 了,何不 async/await 走起 :-) const sleep = (delay) => new Promise(resolve => setTimeout(resolve, delay)); console.log('foo'); await sleep(1000); console.log('bar'); await sleep(1000); console.log('baz'); |
2 chairuosen 2016-06-09 20:54:12 +08:00 function sleep(delay){ alert( delay + '秒钟之后点一下确定' ); } |
3 kzaemrio 2016-06-09 20:57:05 +08:00 @chairuosen 棒棒棒 |
4 wujunze 2016-06-09 21:01:42 +08:00 这是什么飞机? 意义何在? |
7 zhuangzhuang1988 2016-06-09 21:17:03 +08:00 @breeswish 都 async/await 为何不 async computation expressions 走起 :-) async { println "foo" do! Async.Sleep 10000 println "bar" do! Async.Sleep 10000 ..... } 需要使用 http://fsprojects.github.io/Fable/ |
8 zmj1316 2016-06-09 22:29:10 +08:00 js 的 异步 有几种写法? |
9 shuding OP |
10 jasonliao 2016-06-09 22:32:51 +08:00 @chairuosen 今日最佳 |
11 bramblex 2016-06-10 11:31:21 +08:00 |