【发布时间】:2014-10-17 03:18:21
【问题描述】:
我了解到,当我们调用next() 时,代码会一直运行到yield 关键字,而next() return 会保存这个值。我的问题是,如果yield表达式在做一个异步操作,比如执行一个文件io或者http请求,而在异步调用完成之前,我们调用next,是不是代码还是会阻塞,或者即使异步操作还没有完成就立即恢复运行?为什么?
function * generator(){
yield http.get('http://google.com');
yield http.get('http://yahoo.com');
}
var gen = generator();
var a = gen.next();
var b = gen.next();
如果google.com的请求没有完成,yahoo.com的请求会立即发送吗?或者它必须阻止并等待谷歌的请求完成?
【问题讨论】:
标签: javascript generator yield