A plugin for choo (or barracks) that allows you to return promises to end effects and subscriptions. The send function passed to effects and subscriptions is also promisified.
npm install choo-promise
var choo = require('choo')
var chooPromise = require('choo-promise')
var Bluebird = require('bluebird')
var app = choo()
// You can optionally provide your own promise implementation
app.use(chooPromise({ Promise: Bluebird }))
app.model({
state: { value: null }
effects: {
updateValue: async (state, data, send) => {
var value = await fetchSomeData(data)
return send('setValue', { value })
}
},
subscriptions: {
initValue: (send) => {
var value = await fetchSomeData(data)
return send('setValue', { value })
}
}
})
Yup! There's barracks-promisify-plugin
, which does pretty much exactly the same thing. The only differences (at the time of writing) are:
barracks-promisify-plugin
uses ES6 features, which you may or may not care about (some tools don't yet support ES6 syntax without pre-transpiling, like uglify).choo-promise
doesn't use ES6 features.choo-promise
gives you the option to provide your own Promise implementation (like Bluebird) if you want. It will default to the native Promise.