diff options
Diffstat (limited to 'www/lib/localforage/src/drivers/websql.js')
| -rw-r--r-- | www/lib/localforage/src/drivers/websql.js | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/www/lib/localforage/src/drivers/websql.js b/www/lib/localforage/src/drivers/websql.js index 04e6df2d..e99398b8 100644 --- a/www/lib/localforage/src/drivers/websql.js +++ b/www/lib/localforage/src/drivers/websql.js @@ -137,7 +137,7 @@ function iterate(iterator, callback) { return promise; } -function setItem(key, value, callback) { +function _setItem(key, value, callback, retriesLeft) { var self = this; // Cast the key to a string, as that's all we can set as a key. @@ -183,7 +183,11 @@ function setItem(key, value, callback) { // more storage on Safari, this error will // be called. // - // TODO: Try to re-run the transaction. + // Try to re-run the transaction. + if (retriesLeft > 0) { + resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1])); + return; + } reject(sqlError); } }); @@ -196,6 +200,10 @@ function setItem(key, value, callback) { return promise; } +function setItem(key, value, callback) { + return _setItem.apply(this, [key, value, callback, 1]); +} + function removeItem(key, callback) { var self = this; |
