其实就是常规的 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 2
都上 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 5
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 1
@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 2
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
|