50 lines
862 B
JavaScript
50 lines
862 B
JavaScript
|
'use strict'
|
||
|
|
||
|
/**
|
||
|
* Executes functions sequentially.
|
||
|
*
|
||
|
* @param {function[]} arguments - Functions to execute.
|
||
|
* @returns {void}
|
||
|
*/
|
||
|
function flow () {
|
||
|
if (arguments.length === 0) {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
const head = arguments[0]
|
||
|
const rest = [].slice.call(arguments, 1)
|
||
|
|
||
|
head()
|
||
|
setTimeout(() => {
|
||
|
flow.apply(null, rest)
|
||
|
}, 33)
|
||
|
}
|
||
|
|
||
|
const text = String(process.argv[2])
|
||
|
flow(
|
||
|
() => {
|
||
|
process.stdout.write(text)
|
||
|
},
|
||
|
() => {
|
||
|
process.stdout.write(`${text}\n`)
|
||
|
},
|
||
|
() => {
|
||
|
process.stdout.write(`${text}\n${text}`)
|
||
|
},
|
||
|
() => {
|
||
|
process.stdout.write(`${text}\n${text}\n`)
|
||
|
},
|
||
|
() => {
|
||
|
process.stdout.write(`${text}\n${text}\n${text}\n${text}\n`)
|
||
|
},
|
||
|
() => {
|
||
|
process.stdout.write(`\n${text}\n${text}`)
|
||
|
},
|
||
|
() => {
|
||
|
process.stdout.write(`${text}\n\n\n`)
|
||
|
},
|
||
|
() => {
|
||
|
process.stdout.write(`\n${text}`)
|
||
|
}
|
||
|
)
|