Ext.Direct: сопоставление возвращаемых значений с вызовами - PullRequest
0 голосов
/ 04 августа 2010

Я делаю последовательность вызовов 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?

Ответы [ 2 ]

0 голосов
/ 22 января 2014

Вероятно, он не существовал в то время, когда вы спрашивали, но на случай, если кто-то еще удивится:

Когда вы делаете вызов ExtDirect, вы передаете аргументы, обратный вызов, область действия и параметры.

Поместите ваши call_data в опции и получите их обратно с каждым ответом.

0 голосов
/ 06 августа 2010

Решение, которое я разместил в вопросе, работает, даже если оно недокументировано.И поскольку никто не опубликовал другой способ сделать это, я буду придерживаться этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...