Я делаю последовательность вызовов Ajax с помощью модуля Ext.Direct. Я хочу сохранить некоторые данные при каждом вызове, а затем сопоставить каждое возвращаемое значение с правильным вызовом.
При вызове сервера Ext предоставляет свойство tid
(предположительный «идентификатор транзакции») в пакете JSON, которое оно использует для сопоставления возвращаемых значений вызовам. Проблема в том, что, похоже, нет никакого документированного способа для моего Javascript на стороне клиента для захвата tid
исходящего вызова.
Следующий метод работает, но он использует недокументированное свойство Ext.Direct.TID
. Предполагая, что my.namespace.my_action.my_method
является вызовом Ext.Direct API, который был правильно настроен:
// Set up a global object in which to store data about pending calls
pendingCalls = {};
.
.
.
// Make a call to the server-side routine, and queue the data
my.namespace.my_action.my_method( call_data );
pendingCalls[ Ext.Direct.TID ] = call_data;
.
.
.
//The handler of the Ext.direct.Provider's "data" event
onData = function( provider, data ) {
if data.type == "rpc" {
// Recover the original call_data
call_data = pendingCalls[ data.tid ];
// Do something with call_data and data.result
}
}
Мне не нравится использование закрытых внутренних элементов класса Ext.Direct. Есть ли официальный способ сделать это, используя открытый интерфейс Ext.Direct?