ICallbackEventHandler不支持二次回调的问题

今天用到了二次回调,即在回调函数中再次提交一个回调,事实上也调用成功,所要得效果也达到了
但最后出现一个错

错误: '__pendingCallbacks[...].async' 为空或不是对象

跟下去发现问题出现在

function WebForm_CallbackComplete() {
    for (var i = 0; i < __pendingCallbacks.length; i++) {
        callbackObject = __pendingCallbacks[i];
        if (callbackObject && callbackObject.xmlRequest && (callbackObject.xmlRequest.readyState == 4)) {
            WebForm_ExecuteCallback(callbackObject);
            if (!__pendingCallbacks[i].async) {   '__pendingCallbacks[...].async' 为空或不是对象
                __synchronousCallBackIndex = -1;
            }
            __pendingCallbacks[i] = null;
            var callbackFrameID = "__CALLBACKFRAME" + i;
            var xmlRequestFrame = document.getElementById(callbackFrameID);
            if (xmlRequestFrame) {
                xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
            }
        }
    }
}

猜想大概是第一次回调使__pendingCallbacks[i] = null;造成

最后使用setTimeout来解决这个问题,第一个回调函数中使用setTimeout来调用一个方法来进行另外的调用

posted @ 2009-03-24 11:25  明月我心  阅读(309)  评论(0编辑  收藏  举报