Bacon.jsとFRPの概念が新しくなりました。私は非常に基本的な機能を実装するのに苦労しています。Bacon.js(FRP) - アレイから値を追加/削除してストレージに保存します
['A', 'B', 'C']
私はストレージからこれらの値を読み取る(プロミスを返す)非同期関数を持っています。
アレイに新しいアイテムを追加する場合は'add'
イベント、アレイにアイテムを追加する場合は'remove'
イベントがあります。すべてのアレイアップデートは、更新されたアレイをローカルストレージに書き込む必要があります。私はこの解決策になってしまったが、期待どおりに動作しません
:
const items = Bacon
.fromPromise(storage.get('items'))
.mapError(() => [])
.merge(Bacon.fromEvent(events, 'add').map(l => [l]))
.merge(Bacon.fromEvent(events, 'remove').map(l => [l]))
.skipDuplicates()
.filter(l => l)
.toProperty();
items.onValue((items) => {
// everytime rewrites storage with new array (but without old values)
console.log(items);
storage.put('items', items);
});
return items;
だから、スタート動作時には、次のとおりです。
- 我々はストレージからデータを読み取る(それは大丈夫です):
['A', 'B', 'C']
D
アイテムで'add'
イベントが発生した場合、それは既存の配列に追加されません。前の配列値に置き換えられます:['D']
どのように私はベーコンでそれを行うことができますか?私はupdate
メソッドを考えていましたが、残念ながらその初期値はストリームや他の非同期アクションではありません。
ありがとう!私はすでにそれを考え出し、あなたの例と同じようにしました:) – Kosmetika