onComplete中,除了Success、Error、Timeout,还有Abort呢?
@cathsfz
abort是WebRequestExecutor的方法,被调用之后就不会触发complete事件了,因此onComplete方法不会对其进行判断。
在XMLHttpExecutor中,如果调用了abort方法,XMLHttpRequest还没有返回,那么就会摘除onreadystatechange回调函数,并调用XMLHttpRequest的abort方法,还会把timeout监听给取消掉。:)
什么时候能有具体的实例来看,这个理论性太强了,只能是看一次有一个印象,但还是比较抽象,不知道从哪里下手
@Jeffrey Zhao
CTP确实是有4个callback的,分别是onComplete, onTimeout, onError, onAborted。而这4个callback可以放在一个configuration参数中传递给调用代理,结构为:
{
onMethodComplete: onComplete,
onMethodTimeout: onTimeout,
onMethodError: onError,
onMethodAborted: onAborted,
userContext: context,
timeoutInterval: timeout
}
其中,onComplete和onError的参数列表是(result, response, userContext),而onTimeout和onAborted的参数列表是(request, userContext)。
@cathsfz
您说的没错,这些我以前在“深入Atlas系列”中详细谈到过的。
我在onComplete方法中遗漏了这点,已经补上。:)
@李.net
这个是“分析”部分,以后会有“示例”部分的。:)
满到位的分析。恩,还有就是觉得你配色配的也不错。:)
关于userContext,现在官方文档上说明那用于传递一个String,但我记得以前是可以传任何Object的,现在是不是限制为仅能传递String了?
另外,期待本系列的下一篇。
@cathsfz
userContext依旧可以是任何对象,事实上在客户端这些类并没有用到这个值。这个值还是为开发人员保留的。不过这个现在这个东西的存在让人觉得有点好笑,userContext对象已经不会被传入任何回调函数了,得到的方式是例如在onComplete方法中使用response.get_webRequest().get_userContext(),我觉得有点汗。用这个方式,只是为了在WebRequest对象上保留一个附加对象吗?毕竟我们用的是JavaScript。如果是因为客户端代码要塑造一个“完整”的模型的话……这样的功能也颇为无聊了。另外真要模型的话,为什么WebRequest的complete事件的第一个参数是WebRequestExecutor呢?
下一片文章正在写,不过感觉会蛮无聊的,哎,那些代码其实很简单……
@蛙蛙池塘
别急,这里每篇我都用了2-3个小时,如果不是照着代码看的确不容易理解。:)