Я создаю приложение для Android, используя Phonegap/Cordova, который использует календарь устройства. Я написал плагин («Calify»), который добавляет события в календарь устройства, который отлично работает. Однако я пытаюсь добавить идентификатор события календаря устройства, который возвращается плагином, в запись в базе данных Web-SQL, но это дает мне следующие ошибки (работает в симуляторе Android):Ошибка при добавлении данных из асинхронного запроса в базу данных WebSQL
file:///android_asset/www/cordova-2.2.0.js: Line 1090 : processMessage failed: Message: S01 Calify507282772 s[{"id":191,"calid":615}]
file:///android_asset/www/cordova-2.2.0.js: Line 1091 : processMessage failed: Error: Error: INVALID_STATE_ERR: DOM Exception 11
Вот как выглядит мой код.
window.addEvent(function(insertions){
data = JSON.parse(insertions);
console.log(insertions);
event_id = data[0]['calid'];
id = data[0]['id'];
tx.executeSql('UPDATE AFSPRAKEN SET eventID=? WHERE id=' + id, [event_id]);
}, [calendarID, [{start: start.getTime(), end: end.getTime(), title: event_title}]]);
Логарифм «вставки» дает мне желаемый результат, а также ведение журнала «event_id» и «идентификатор» по отдельности. Кажется, что это связано с вставкой базы данных (которая также асинхронна). Обратите внимание, что эта функция выполняется в транзакции базы данных, что необходимо, потому что я выполняю некоторые другие запросы, а также вне этой функции события календаря. Комментируя запрос вставки, код запускается без ошибок.
DOM Exception 11 похоже, что объект («вставки», я думаю?) Больше не доступен, возможно, он имеет какое-то отношение к этому.
I» вам удалось обойти это, добавив параметры addEvent в массив, который я повторяю при успешной транзакции базы данных. В этом расширении выполняется функция addEvent, которая создает новую транзакцию базы данных при завершении, чтобы обновить соответствующую запись (записи). Определенный ответ, объясняющий исходное поведение, по-прежнему будет приветствоваться, но я предполагаю, что он вызван асинхронным запросом (функция addEvent), встроенным в другой запрос asynch (транзакция db), с завершением первого запроса, пытающегося запустить что-то в последний. – Tumtum