Php AS2等待返回

Php AS2等待返回,php,actionscript-2,listeners,Php,Actionscript 2,Listeners,我在做一个AS2项目。我目前有一个链接到一些PHP数据包的函数。基本上,发送数据包,然后根据参数发回一些信息。很简单,真的 问题是原始函数需要返回该数据。所以我需要它等待数据包返回以便返回。除非您不能将“return”附加为侦听器的函数 function handleReturnNicknameById(id) { nFunctionComplete = 0; trace("api : handleGetSwidById"); AIRTOWER.send(AIRTOWER

我在做一个AS2项目。我目前有一个链接到一些PHP数据包的函数。基本上,发送数据包,然后根据参数发回一些信息。很简单,真的

问题是原始函数需要返回该数据。所以我需要它等待数据包返回以便返回。除非您不能将“return”附加为侦听器的函数

function handleReturnNicknameById(id)
{
    nFunctionComplete = 0;
    trace("api : handleGetSwidById");
    AIRTOWER.send(AIRTOWER.PLAY_EXT, "friends#getPlayerInfoById", [id], "str", SHELL.getCurrentServerRoomId());
    AIRTOWER.addListener('getPlayerInfoById', handleReturnNickname);
    while(nFunctionComplete < 700)
    {
        if(nickReady == true)
        {
            nFunctionComplete = 701;
            return(nickToReturn);
        }
        nFunctionComplete++;
    }
}
function handleReturnNickname(obj)
{
    AIRTOWER.removeListener('getPlayerInfoById', handleReturnNickname);
    obj.shift();
    nickToReturn = obj[1];
    nickReady = true;
}
函数handleReturnNicknickById(id)
{
nFunctionComplete=0;
跟踪(“api:handleGetSwidById”);
AIRTOWER.send(AIRTOWER.PLAY_EXT,“friends#getPlayerInfoById”,[id],“str”,SHELL.getCurrentServerRoomId());
AIRTOWER.addListener('getPlayerInfoById',Handlereturn昵称);
而(功能完成<700)
{
如果(nickReady==true)
{
nFunctionComplete=701;
返回(nickToReturn);
}
nFunctionComplete++;
}
}
函数handleReturn昵称(obj)
{
AIRTOWER.removeListener('getPlayerInfoById',Handlereturn昵称);
obj.shift();
nickToReturn=obj[1];
nickReady=正确;
}
这是我唯一能让它工作的想法。我知道这是非常无效的,这就是为什么我在这里寻求帮助


最终的问题是:在AS2中,是否可以在返回之前使函数“wait”?

要执行您正在查找的操作,您可以使用在加载数据时将调用的。因此,您的代码如下所示:

function handleReturnNicknameById(id:Number, callback:Function): Void
{
    AIRTOWER.send(AIRTOWER.PLAY_EXT, "friends#getPlayerInfoById", [id], "str", SHELL.getCurrentServerRoomId());
    AIRTOWER.addListener('getPlayerInfoById', handleReturnNickname);

    function handleReturnNickname(obj): Void
    {
        AIRTOWER.removeListener('getPlayerInfoById', handleReturnNickname);
        obj.shift();
        var nickToReturn = obj[1];

        // run the callback function and pass the needed data
        callback(nickToReturn);
    }

}

// this function is called only when data is loaded
function my_callback(data): Void 
{
    // here you can use your data
    trace('loaded data : ' + data);
}
并执行所有这些:

handleReturnNicknameById(id, my_callback);
希望这能有所帮助