Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 正在等待加载URL以返回数据AS3_Multithreading_Actionscript 3_Url_Event Handling - Fatal编程技术网

Multithreading 正在等待加载URL以返回数据AS3

Multithreading 正在等待加载URL以返回数据AS3,multithreading,actionscript-3,url,event-handling,Multithreading,Actionscript 3,Url,Event Handling,我有一个函数,它有一个for循环中的数据,数据被传递到我的函数中,函数将数据放入URL加载器,加载它,然后从加载的URL返回数据。如果我不停地尝试这样做,URL加载速度不够快,无法返回数据。我找不到一种方法来设置止损点,这样就不会导致错误。我不能使用事件监听器,因为它们不能返回值,我不能只创建一个函数来将数据分配给变量,因为在使用URLloader调用函数的函数中需要它。我可以做一个图表来更好地解释。我不太确定这是否可能,如果我需要重新构造代码。我试过两种方法: 这会导致堆栈溢出: packag

我有一个函数,它有一个for循环中的数据,数据被传递到我的函数中,函数将数据放入URL加载器,加载它,然后从加载的URL返回数据。如果我不停地尝试这样做,URL加载速度不够快,无法返回数据。我找不到一种方法来设置止损点,这样就不会导致错误。我不能使用事件监听器,因为它们不能返回值,我不能只创建一个函数来将数据分配给变量,因为在使用URLloader调用函数的函数中需要它。我可以做一个图表来更好地解释。我不太确定这是否可能,如果我需要重新构造代码。我试过两种方法: 这会导致堆栈溢出:

package app
{
    import flash.xml.XMLDocument;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.events.Event;
    import flash.display.MovieClip;

    public class main extends MovieClip
    {
        var geoReq:URLRequest = new URLRequest;
        var geoLoader:URLLoader = new URLLoader();
        var GeocodeResponse:XML;
        var geoLocList:XMLList = new XMLList();
        var geoLoc:Array = new Array();
        function main():void
        {
            var urlReq:URLRequest = new URLRequest("http://search.twitter.com/search.atom?q=flu&rpp=3&lang=en&geocode=55.378051,-3.435973,605mi");
            var loader:URLLoader = new URLLoader();
            loader.addEventListener(Event.COMPLETE, getTweets);
            loader.load(urlReq);
        }
        function getTweets( e:Event ):void
        {
            if ( e.target.data )
            {
                var tweets = new Array(); var times = new Array();
                var twitterXML:XML = new XML(e.target.data);
                var tweetList:XMLList = twitterXML.children();
                var tweetItem:String;
                var placeItem:String;
                var tweet:Array = new Array();
                for (var i:int = 0; i < tweetList.length(); i++)
                {
                    tweetItem = tweetList[i].*::title;
                    placeItem = tweetList[i].*::location;
                    if( tweetItem && placeItem != "")
                    {
                    placeItem = loadGeo(placeItem);
                    tweet = [tweetItem, placeItem];
                    tweets.push(tweet);
                    trace(tweets[tweets.length - 1][0]);
                    trace(tweets[tweets.length - 1][1]);
                    }
                }
                trace(tweets.length);
            }
        }
        function loadGeo(loc:String):Array
        {
            geoReq = new URLRequest("https://maps.googleapis.com/maps/api/geocode/xml?address="+loc+"&sensor=false");
            geoLoader.load(geoReq);
            GeocodeResponse = new XML(geoLoader.data);
            geoLoc = returnLoc();
            return geoLoc;
        }
        function returnLoc():Array
        {
            if(geoLoader.data == null)
            {
                returnLoc();
            }
            else
            {
                var returnD:Array = new Array(GeocodeResponse.result.geometry.location[0].lat, GeocodeResponse.result.geometry.location[0].lng);
            }
            return returnD;
        }
    }
}
package应用程序
{
导入flash.xml.xml文档;
导入flash.net.urloader;
导入flash.net.URLRequest;
导入flash.events.Event;
导入flash.display.MovieClip;
公共类main扩展了MovieClip
{
var geoReq:URLRequest=新的URLRequest;
var geoLoader:URLLoader=新的URLLoader();
var-GeocodeResponse:XML;
var geoLocList:XMLList=new XMLList();
var geoLoc:Array=new Array();
函数main():void
{
var urlReq:URLRequest=新的URLRequest(“http://search.twitter.com/search.atom?q=flu&rpp=3&lang=en&geocode=55.378051,-3.435973605mi);
变量加载器:URLLoader=新的URLLoader();
loader.addEventListener(Event.COMPLETE,getTweets);
loader.load(urlReq);
}
函数getTweets(e:事件):void
{
如果(如目标数据)
{
var tweets=new Array();var times=new Array();
var twitterXML:XML=新的XML(e.target.data);
var tweetList:XMLList=twitterXML.children();
变量项:字符串;
var placeItem:字符串;
var tweet:Array=newarray();
对于(var i:int=0;i
这会导致错误“TypeError:error#1010:A term未定义且没有属性”:

package应用程序
{
导入flash.xml.xml文档;
导入flash.net.urloader;
导入flash.net.URLRequest;
导入flash.events.Event;
导入flash.display.MovieClip;
公共类main扩展了MovieClip
{
var geoReq:URLRequest=新的URLRequest;
var geoLoader:URLLoader=新的URLLoader();
var-GeocodeResponse:XML;
var geoLocList:XMLList=new XMLList();
var geoLoc:Array=new Array();
函数main():void
{
var urlReq:URLRequest=新的URLRequest(“http://search.twitter.com/search.atom?q=flu&rpp=3&lang=en&geocode=55.378051,-3.435973605mi);
变量加载器:URLLoader=新的URLLoader();
loader.addEventListener(Event.COMPLETE,getTweets);
loader.load(urlReq);
}
函数getTweets(e:事件):void
{
如果(如目标数据)
{
var tweets=new Array();var times=new Array();
var twitterXML:XML=新的XML(e.target.data);
var tweetList:XMLList=twitterXML.children();
变量项:字符串;
var placeItem:字符串;
var tweet:Array=newarray();
对于(var i:int=0;i

请帮助,提前感谢,凯尔。

您正在等待
搜索.twitter.com
请求的完成,但您不会等待地理编码请求的完成。这就是错误所在。每次使用加载程序时,都会使用异步加载
package app
{
    import flash.xml.XMLDocument;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.events.Event;
    import flash.display.MovieClip;

    public class main extends MovieClip
    {
        var geoReq:URLRequest = new URLRequest;
        var geoLoader:URLLoader = new URLLoader();
        var GeocodeResponse:XML;
        var geoLocList:XMLList = new XMLList();
        var geoLoc:Array = new Array();
        function main():void
        {
            var urlReq:URLRequest = new URLRequest("http://search.twitter.com/search.atom?q=flu&rpp=3&lang=en&geocode=55.378051,-3.435973,605mi");
            var loader:URLLoader = new URLLoader();
            loader.addEventListener(Event.COMPLETE, getTweets);
            loader.load(urlReq);
        }
        function getTweets( e:Event ):void
        {
            if ( e.target.data )
            {
                var tweets = new Array(); var times = new Array();
                var twitterXML:XML = new XML(e.target.data);
                var tweetList:XMLList = twitterXML.children();
                var tweetItem:String;
                var placeItem:String;
                var tweet:Array = new Array();
                for (var i:int = 0; i < tweetList.length(); i++)
                {
                    tweetItem = tweetList[i].*::title;
                    placeItem = tweetList[i].*::location;
                    if( tweetItem && placeItem != "")
                    {
                    placeItem = loadGeo(placeItem);
                    tweet = [tweetItem, placeItem];
                    tweets.push(tweet);
                    trace(tweets[tweets.length - 1][0]);
                    trace(tweets[tweets.length - 1][1]);
                    }
                }
                trace(tweets.length);
            }
        }
        function loadGeo(loc:String):Array
        {
            geoReq = new URLRequest("https://maps.googleapis.com/maps/api/geocode/xml?address="+loc+"&sensor=false");
            geoLoader.load(geoReq);
            GeocodeResponse = new XML(geoLoader.data);
            geoLoc = [GeocodeResponse.result.geometry.location[0].lat, GeocodeResponse.result.geometry.location[0].lng];
            return geoLoc;
        }
    }
}