2009-12-17 54 views

回答

2

据我所知,ActionScript不具有协同程序,延续或任何会给你相关的行为(调用一个函数没有推堆栈帧)。你可以使用静态变量和一个switch来伪造它,但是这违背了对状态机使用协程的目的。另外,没有尾部调用(据我所知,仍然只有一个proposal for ECMASCRIPT),伪造的协程不会像真正的协程那样使用不变的堆栈空间。

关于您的示例代码,协程通常需要循环才有用。

1

嗯,这个怎么样?

function stateMachine(socket:Socket, target:YourReceiverClass):void 
{ 
    target.sendBytes(0xFFFF); 
    var receiveByte:int = socket.readByte(); 
    target.sendBytes(receiveByte); 
} 

stateMachine(mySocket)