現在、ReactNativeでユーザ登録機能を実装しています。
ID1 {id: 1, username: "B", password: "B"} ID0 {id: 0, username: "A", password: "A"}
というデータがAsyncStorageに格納されており、id2のデータを追加したいです。
ここで、idの最後の値を取得して(この場合、1)その値に+1したものを最新のidとして
新たにデータを登録したいです。
下のコードを実行すると、
tail 0 // (3)の出力 1 // (2)の1回目の出力 2 // (2)の2回目の出力
という結果が返ってきました。
期待する(3)の結果は、2なのですがどうすれば、解決できるのでしょうか?
おそらく、スコープの問題ではないかと思うですが‥‥
よろしくお願いします。
register = () =>{ // 管理者の登録 var tail_id = 0; // AsyncStorage内、末尾のid AsyncStorage.getAllKeys((err, keys) => { AsyncStorage.multiGet(keys, (err, stores) => { stores.map((result, i, store) => { let key = store[i][0]; let json = store[i][1]; let json_parsed = JSON.parse(json); tail_id += 1; // (1) console.log(tail_id); // (2) }); }); }); console.log('tail',tail_id); // (3) let new_user ={ id : tail_id, username : this.state.username, password : this.state.password, } AsyncStorage.mergeItem('ID' + new_user.id , JSON.stringify(new_user)); }
登録後の期待するAsyncStorage中身
ID2 {id: 2, username: "C", password: "C"} ID1 {id: 1, username: "B", password: "B"} ID0 {id: 0, username: "A", password: "A"}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/16 03:44