目前我在AS3
项目中使用承诺,但这也与JS
项目相关。
说我有这个代码,在AS3
:
public function getFeed():Promise
{
var request:URLRequest = new URLRequest(END_POINT);
var loader:URLLoader = new URLLoader();
var dfd:Deferred = new Deferred();
loader.addEventListener(Event.COMPLETE, handleGetFeedReady, false, 0, true);
loader.load(request);
return dfd.promise;
}
private function handleGetFeedReady(e:Event):void
{
e.target.removeEventListener(Event.COMPLETE, handleGetFeedReady);
vo.entries = JSON.decode(e.target.data);
// resolve the dfd here
}
我想要以某种方式将dfd
(延迟的)对象传递给我的事件处理程序。现在我知道我可以像这样使用匿名函数:
loader.addEventListener(Event.COMPLETE, function(e:Event):void
{
handleGetFeedReady(dfd, e);
}, false, 0, true);
但是我想避免使用每次调用父方法时创建的匿名函数(也许我太肛门了)。
另一种选择可能是创建对dfd
对象的类引用,但是当我想同时调用该方法时会产生问题。