2017-03-21 16 views
4

トークンベースの認証を検証するionicアプリを使用するローカルストアにトークンを格納する間にストアする時間がかかります次の状態に移行すると非同期的な方法ローカルストレージに設定値javascriptで非同期でlocalstorage setItemを実行するソリューションはありません

window.localStorage.setItem('ChemistloggedInUser', JSON.stringify(data)) 
+3

'setTimeout'にコードを入れよう – Satpal

+0

すべてのlocalStorage呼び出しは、[here](http://stackoverflow.com/questions/20231163/is-html5-localstorage-asynchronous)で説明されているように同期しています。 – Mantas

答えて

6

localStorageは同期APIです。あなたは彼らに、非同期動作を与え、Promise対象とsetItemメソッドの実行を延期することができます:

const asyncLocalStorage = { 
    setItem: function (key, value) { 
     return Promise.resolve().then(function() { 
      localStorage.setItem(key, value); 
     }); 
    }, 
    getItem: function (key) { 
     return Promise.resolve().then(function() { 
      return localStorage.getItem(key); 
     }); 
    } 
}; 

// Demo 
const data = Date.now() % 1000; 
asyncLocalStorage.setItem('mykey', data).then(function() { 
    return asyncLocalStorage.getItem('mykey'); 
}).then(function (value) { 
    console.log('Value has been set to:', value); 
}); 
console.log('waiting for value to become ' + data + 
      '. Current value: ', localStorage.getItem('mykey')); 

SOスニペットはlocalStorageの使用を許可していないとして、それは、repl.it上で実行を参照してください。

関連する問題