实际编程中遇到一个问题:

var s = ...;
co(function* fn(){
    // IO操作1
    s = yield SomeFunc();
});

// IO操作2,没有使用generators,如事件操作等
var e = SomeOpenFileFunc();
e.on("read", (err, data) => {
    console.log(data);
});
e.on("close", (err) => {
    // 关闭文件
});

那么,是IO1先执行完成后再执行IO2呢(类似同步的流程),还是IO1和IO2并行执行呢(类似异步的过程)?这是个问题,有空试一下。
感觉应该是后者,我感觉co里面的那个回调是异步的,所以执行完co这一句以后就直接返回了,继续执行SomeOpenFileFunc()。