當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript react-native.AsyncStorage類代碼示例

本文整理匯總了TypeScript中react-native.AsyncStorage的典型用法代碼示例。如果您正苦於以下問題:TypeScript AsyncStorage類的具體用法?TypeScript AsyncStorage怎麽用?TypeScript AsyncStorage使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了AsyncStorage類的10個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。

示例1: getCacheCurSize

  /**
   * return the current size of the cache
   * @return {Promise}
   */
  async getCacheCurSize() {
    let ret = await AsyncStorage.getItem(this.cacheCurSizeKey);
    if (!ret) {
      await AsyncStorage.setItem(this.cacheCurSizeKey, '0');
      ret = '0';
    }
    return Number(ret);

  }
開發者ID:lukethompson,項目名稱:aws-amplify,代碼行數:13,代碼來源:AsyncStorageCache.ts

示例2: _removeItem

  /**
   * delete item from cache
   * @private
   * @param prefixedKey - the key of the item
   * @param size - optional, the byte size of the item
   */
  async _removeItem(prefixedKey, size?) {
    const itemSize = size? size : (JSON.parse(await AsyncStorage.getItem(prefixedKey))).byteSize;
    // first try to update the current size of the cache
    await this._decreaseCurSizeInBytes(itemSize);

    // try to remove the item from cache
    try {
      await AsyncStorage.removeItem(prefixedKey);
    } catch (removeItemError) {
      // if some error happened, we need to rollback the current size
      await this._increaseCurSizeInBytes(itemSize);
      logger.error(`Failed to remove item: ${removeItemError}`);
    }
  }
開發者ID:lukethompson,項目名稱:aws-amplify,代碼行數:20,代碼來源:AsyncStorageCache.ts

示例3: _popOutItems

  /**
   * get all the items we have, sort them by their priority,
   * if priority is same, sort them by their last visited time
   * pop out items from the low priority (5 is the lowest)
   * @private
   * @param keys - all the keys in this cache
   * @param sizeToPop - the total size of the items which needed to be poped out
   */
  async _popOutItems(keys, sizeToPop) {
    const items = [];
    let remainedSize = sizeToPop;
    for (let i = 0; i < keys.length; i += 1) {
      const val = await AsyncStorage.getItem(keys[i]);
      if (val != null) {
        const item = JSON.parse(val);
        items.push(item);
      }
    }

    // first compare priority
    // then compare visited time
    items.sort((a, b) => {
      if (a.priority > b.priority) {
        return -1;
      } else if (a.priority < b.priority) {
        return 1;
      } else {
        if (a.visitedTime < b.visitedTime) {
          return -1;
        } else return 1;
      }
    });

    for (let i = 0; i < items.length; i += 1) {
      // pop out items until we have enough room for new item
      await this._removeItem(items[i].key, items[i].byteSize);
      remainedSize -= items[i].byteSize;
      if (remainedSize <= 0) {
        return;
      }
    }

  }
開發者ID:lukethompson,項目名稱:aws-amplify,代碼行數:43,代碼來源:AsyncStorageCache.ts

示例4: finalizeLogIn

 /**
  * this should be called when the setup procedure has been successful
  * @param userId
  * @returns {*|Promise.<TResult>}
  */
 finalizeLogIn(userId) {
   // write to database that we are logged in.
   return AsyncStorage.setItem(LOGGED_IN_USER_ID_STORAGE_KEY, userId)
     .catch((err) => {
       LOGe.store("StoreManager: finalize login failed. ", err);
     })
 }
開發者ID:crownstone,項目名稱:CrownstoneApp,代碼行數:12,代碼來源:storeManager.ts

示例5: _init

 _init() {
   AsyncStorage.getItem(this.userIdentificationStorageKey) // this will just contain a string of the logged in user.
     .then((userId) => {
       this._initializeStore(userId);
     })
     .catch((err) => { LOGe.store("StoreManager: Could not get store from AsyncStorage", err)});
 }
開發者ID:crownstone,項目名稱:CrownstoneApp,代碼行數:7,代碼來源:storeManager.ts

示例6: flow

    hydrate: flow(function* () {

      if (__DEV__) {
        // Inspect individual models
        makeInspectable(self);
        makeInspectable(Movies);
        makeInspectable(InTheaters);
        makeInspectable(Genres);
      }

      const storageKey = 'Store.settings';
      const data = JSON.parse(yield AsyncStorage.getItem(storageKey));
      if (data) {
        applySnapshot(self.settings, data);
      }

      onSnapshot(self.settings, debounce(
        snapshot => AsyncStorage.setItem(storageKey, JSON.stringify(snapshot)),
        1200,
      ));

      // Load all supplimental data
      Genres.loadAllGenres();
      Cinemas.loadAllCinemas();

      self.isHydrated = true;
    }),
開發者ID:birkir,項目名稱:kvikmyndr-app,代碼行數:27,代碼來源:index.ts

示例7: _isExpired

 /**
  * check wether item is expired
  * @private
  * @param key - the key of the item
  * 
  * @return true if the item is expired.
  */
 async _isExpired(key) {
   const text = await AsyncStorage.getItem(key);
   const item = JSON.parse(text);
   if (getCurrTime() >= item.expires) {
     return true;
   }
   return false;
 }
開發者ID:lukethompson,項目名稱:aws-amplify,代碼行數:15,代碼來源:AsyncStorageCache.ts

示例8: setConsent

  public setConsent(consent: IDataPolicyConsent) {
    const serializedProgress = JSON.stringify(consent);

    return AsyncStorage.setItem(
      DataPolicyConsentStorage.getKey(),
      serializedProgress
    );
  }
開發者ID:serlo-org,項目名稱:serlo-abc,代碼行數:8,代碼來源:DataPolicyConsentStorage.ts

示例9: getProgress

  public getProgress(id: string) {
    return AsyncStorage.getItem(this.getKey(id)).then(data => {
      if (!data) {
        return {};
      }

      return JSON.parse(data) as ISerializedProgress;
    });
  }
開發者ID:serlo-org,項目名稱:serlo-abc,代碼行數:9,代碼來源:ProgressStorage.ts

示例10: setItem

  /**
   * Set item into cache. You can put number, string, boolean or object.
   * The cache will first check whether has the same key.
   * If it has, it will delete the old item and then put the new item in
   * The cache will pop out items if it is full
   * You can specify the cache item options. The cache will abort and output a warning:
   * If the key is invalid
   * If the size of the item exceeds itemMaxSize.
   * If the value is undefined
   * If incorrect cache item configuration
   * If error happened with browser storage
   * 
   * @param {String} key - the key of the item
   * @param {Object} value - the value of the item
   * @param {Object} [options] - optional, the specified meta-data
   * @return {Prmoise}
   */
  async setItem(key, value, options) {
    logger.debug(`Set item: key is ${key}, value is ${value} with options: ${options}`);
    const prefixedKey = this.config.keyPrefix + key;
    // invalid keys
    if (prefixedKey === this.config.keyPrefix || prefixedKey === this.cacheCurSizeKey) {
      logger.warn(`Invalid key: should not be empty or 'CurSize'`);
      return;
    }
    
    if ((typeof value) === 'undefined') {
      logger.warn(`The value of item should not be undefined!`);
      return;
    }

    const cacheItemOptions = {
      priority: options && options.priority !== undefined ? options.priority : this.config.defaultPriority,
      expires: options && options.expires !== undefined ? options.expires : (this.config.defaultTTL + getCurrTime())
    };

    if (cacheItemOptions.priority < 1 || cacheItemOptions.priority > 5) {
      logger.warn(`Invalid parameter: priority due to out or range. It should be within 1 and 5.`);
      return;
    }

    const item = this.fillCacheItem(prefixedKey, value, cacheItemOptions);
    
    // check wether this item is too big;
    if (item.byteSize > this.config.itemMaxSize) {
      logger.warn(`Item with key: ${key} you are trying to put into is too big!`);
      return;
    }

    try {
      // first look into the storage, if it exists, delete it.
      const val = await AsyncStorage.getItem(prefixedKey);
      if (val) {
        await this._removeItem(prefixedKey, JSON.parse(val).byteSize);
      }


      // check whether the cache is full
      if (await this._isCacheFull(item.byteSize)) {
        const validKeys = await this._findValidKeys();
        if (await this._isCacheFull(item.byteSize)) {
          const sizeToPop = await this._sizeToPop(item.byteSize);
          await this._popOutItems(validKeys, sizeToPop);
        }
      }

      // put item in the cache
      await this._setItem(prefixedKey, item);
    } catch (e) {
      logger.warn(`setItem failed! ${e}`);
    }
  }
開發者ID:lukethompson,項目名稱:aws-amplify,代碼行數:72,代碼來源:AsyncStorageCache.ts


注:本文中的react-native.AsyncStorage類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。