RunKit + npm: vuex-observable
const Vue = require('vue')
const Vuex = require('vuex')
const { default: VuexObservable } = require('vuex-observable')
const { Observable } = require('rxjs/Observable')
const { of } = require('rxjs/observable/of')
require('rxjs/add/observable/from')
require('rxjs/add/operator/skip')
require('rxjs/add/operator/take')
Vue.use(Vuex)
const store = new Vuex.Store({
plugins: [
VuexObservable(Observable),
],
state: {
normal: false,
promise: false,
observable: false,
},
mutations: {
normal (state) {
state.normal = true
},
promise (state) {
state.promise = true
},
observable (state) {
state.observable = true
},
},
actions: {
normal ({commit}) {
commit('normal')
return 'observable'
},
promise ({commit}) {
commit('promise')
return Promise.resolve('observable')
},
observable ({commit}) {
commit('observable')
return of('observable')
},
},
})
Observable.from(store)
.skip(3)
.take(1)
.subscribe(state => {
console.log(state.normal === true)
console.log(state.promise === true)
console.log(state.observable === true)
})
store.dispatch('normal').subscribe(result => {
console.log(result === 'observable')
})
store.dispatch('promise').subscribe(result => {
console.log(result === 'observable')
})
store.dispatch('observable').subscribe(result => {
console.log(result === 'observable')
})
'^w^'
no comments