mirror of
https://github.com/public-transport/db-vendo-client.git
synced 2025-02-23 23:29:35 +02:00
33 lines
717 B
JavaScript
33 lines
717 B
JavaScript
'use strict'
|
|
|
|
// https://github.com/babel/babel/blob/3c8d831fe41f502cbe2459a271d19c7329ffe369/packages/babel-helpers/src/helpers.js#L242-L270
|
|
const co = (fn) => {
|
|
return function run () {
|
|
const self = this, args = arguments
|
|
return new Promise((resolve, reject) => {
|
|
const gen = fn.apply(self, args)
|
|
const step = (key, arg) => {
|
|
try {
|
|
var info = gen[key](arg)
|
|
var value = info.value
|
|
} catch (error) {
|
|
reject(error)
|
|
return
|
|
}
|
|
if (info.done) resolve(value)
|
|
else Promise.resolve(value).then(_next, _throw)
|
|
}
|
|
|
|
const _next = (value) => {
|
|
step('next', value)
|
|
}
|
|
const _throw = (err) => {
|
|
step('throw', err)
|
|
}
|
|
|
|
_next()
|
|
})
|
|
}
|
|
}
|
|
|
|
module.exports = co
|