Skip to content

Instantly share code, notes, and snippets.

@thgreasi
Last active August 29, 2015 14:26
Show Gist options
  • Select an option

  • Save thgreasi/01f6460f35bf49213c0e to your computer and use it in GitHub Desktop.

Select an option

Save thgreasi/01f6460f35bf49213c0e to your computer and use it in GitHub Desktop.

Revisions

  1. thgreasi revised this gist Aug 7, 2015. 2 changed files with 21 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions es7
    Original file line number Diff line number Diff line change
    @@ -1,8 +1,8 @@
    async function setDriver(driverNames) {
    for (var driverName of driverNames) {
    if (this.support(driverName) {
    if (this.supports(driverName) {
    try {
    let driver = await this.getDriver(driverName);
    let driver = await this.getDriver(driverName).then(driver => driver._initDriver());
    if (driver) {
    return Promise.resolve(driver);
    }
    19 changes: 19 additions & 0 deletions setDriverLooperGenerators.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,19 @@
    new Promise((resolve, reject) => {
    runGeneratorOnce(myPromiseGenerator, initialValue);

    function runGeneratorOnce(pg, result) { var status = pg.next(result);
    if (status.done) { reject('No driver'); return; }

    status.value.then(resolve).catch(value => {
    return runGeneratorOnce(pg, value);
    });
    }

    function* myPromiseGenerator() {
    for (var i = 0, len = drivers.length; i < len; i++) {
    if (localforage.supports(driver)) {
    yield localforage.setDriver(driver);
    }
    }
    }
    });
  2. thgreasi revised this gist Aug 7, 2015. 1 changed file with 13 additions and 0 deletions.
    13 changes: 13 additions & 0 deletions es7
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,13 @@
    async function setDriver(driverNames) {
    for (var driverName of driverNames) {
    if (this.support(driverName) {
    try {
    let driver = await this.getDriver(driverName);
    if (driver) {
    return Promise.resolve(driver);
    }
    } catch (e) { }
    }
    }
    return Promise.reject('No supported driver found!');
    }
  3. thgreasi renamed this gist Aug 7, 2015. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  4. thgreasi created this gist Aug 7, 2015.
    20 changes: 20 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,20 @@
    var localForageDriverOrder = [localforage.INDEXEDDB, localforage.LOCALSTORAGE, localforage.WEBSQL];

    var setDriverPromise = new Promise(function(resolve, reject) {
    var drivers = localForageDriverOrder.slice();
    var crntDriverPromise = Promise.resolve();
    crntDriverPromise.then(driversPromiseLoop);

    function driversPromiseLoop(){
    var driver = null;
    while (driver = drivers.shift()) {
    if (localforage.supports(driver)) {
    crntDriverPromise = localforage.setDriver(driver);
    return crntDriverPromise.then(function(){
    resolve();
    }).catch(driversPromiseLoop);
    }
    }
    reject('No driver');
    }
    });