0
Здесь много кода, но я хотел, чтобы это был полный пример. Я приложил все усилия, чтобы сделать его общим, чтобы другие могли извлечь выгоду из него, а также извлечь выгоду из вашего ответа (ответов).Объединение нескольких строк в 1 транзакцию
То, что я пытаюсь сделать, это:
- ВЫБРАТЬ BarcodeID ИЗ IPAD
- ДЛЯ КАЖДОЙ Barcode, загрузить на сервер.
- ДЛЯ КАЖДОЙ Callback, обновить IPad
Что мне нужно сделать, это каким-то образом упаковать все строки вместе в одной транзакции, потому что сейчас это слишком медленно. Что-то вроде:
- ВЫБОР BarcodeID ИЗ IPAD
- ДЛЯ КАЖДОЙ Barcode, сцепить в строку JSON
- Загрузить строку JSON на сервер.
- Начните транзакцию
- ДЛЯ КАЖДОЙ BarcodeID в обратный вызов
- совершать сделки
var Variables = {};
function SelectiPad(SQLTransaction) {
var local = {};
local.sqlite = "SELECT BarcodeID"
+ " FROM iPad"
+ " WHERE ServerSyncDateTime is null"
+ " ORDER BY BarcodeID";
SQLTransaction.executeSql(
local.sqlite
,[]
,SelectiPadSuccess
,SelectiPadFailure
)
};
function SelectiPadSuccess(SQLTransaction,SQLResultSet) {
Variables.iPadRecordcount = SQLResultSet.rows.length;
for (var i=0; i < SQLResultSet.rows.length;i++) {
UploadServer(SQLResultSet.rows.item(i));
}
};
function UploadServer(arg) {
var local = {};
local.data = {};
local.data.method = 'Save';
local.type = 'post';
local.data.BarcodeID = arg.BarcodeID;
local.Promise = $.ajax('Server.cfc',local);
local.Promise.done(UploadServerDone); // UPDATE Barcode set SyncDateTime
local.Promise.fail(UploadServerFail);
};
function UploadServerDone(RESULT) {
var local = {};
local.ServerSyncDateTime = RESULT.QRY.DATA.SERVERSYNCDATETIME[0]; // UPPERCASE
local.BarcodeID = RESULT.QRY.DATA.BARCODEID[0]; // UPPERCASE
local.UpdateiPad = UpdateiPad.bind(this,local);
dbo.transaction(local.UpdateiPad);
}
function UpdateiPad(arg,SQLTransaction) {
var local = {};
local.sqlite = "UPDATE iPad SET"
+ " ServerSyncDateTime=?1"
+ " WHERE BarcodeID=?2"
SQLTransaction.executeSql(
local.sqlite
,[
arg.ServerSyncDateTime // 1
,arg.BarcodeID // 2
]
,UpdateiPadSuccess
,UpdateiPadFailure
)
}
function UpdateiPadSuccess() {
Variables.iPadRecordcount -=1;
if (!Variables.iPadRecordcount) {
Finished();
}
};
function Finished() {
alert('yay');
}
function SelectiPadFailure(SQLTransaction, SQLError) {
$('.msg').text(SQLError.message);
debugger;
}
function UploadServerFail(jqXHR, textStatus, errorThrown) {
$('.msg').html(errorThrown);
debugger;
}
function UpdateiPadFailure(SQLTransaction,SQLError) {
$('.msg').html(SQLError.message);
debugger;
}
Я попытался форматирование его как код, но он не форматирует чисто на SO для какая-то странная причина. –
Значит, вы не знаете, как конкатенировать строки? Или какова ваша конкретная проблема? –