/
DeferredEventDispatcherExample.as
53 lines (46 loc) · 1.47 KB
/
DeferredEventDispatcherExample.as
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package org.osflash.async
{
import org.osflash.async.impl.TweetVO;
import org.osflash.async.impl.XMLTweetParser;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
/**
* @author Jonny
*/
public class DeferredEventDispatcherExample
{
public function DeferredEventDispatcherExample()
{
when(fetchTweetsFor("catburton"), fetchTweetsFor("jonnyreeves"))
.completes(function() : void {
trace("Got Tweets yo!");
})
.completes(onTweetsFetched)
.fails(onFailed);
}
private function fetchTweetsFor(username : String) : Promise
{
const urlLoader : URLLoader = new URLLoader();
const deferred : DeferredEventDispatcher = new DeferredEventDispatcher(urlLoader)
.resolveOn(Event.COMPLETE, function(event : Event) : Vector.<TweetVO> {
return new XMLTweetParser().parse(urlLoader.data);
})
.rejectOn(IOErrorEvent.IO_ERROR);
urlLoader.load(new URLRequest("https://api.twitter.com/1/statuses/user_timeline.xml?screen_name=" + username + "&count=3"));
return deferred.promise();
}
private function onFailed(error : Error) : void
{
trace("Failed to fetch tweets: " + error);
}
private function onTweetsFetched(outcomes : Array) : void
{
trace("Fetched " + outcomes.length + " sets of Tweets");
for each (var tweets : Vector.<TweetVO> in outcomes) {
trace(tweets.join("\n"));
}
}
}
}