generator-abbott
Version:
Yeoman Generator for the Abbott Platform
46 lines (34 loc) • 1.19 kB
JavaScript
;
const Generator = require('yeoman-generator');
// const chalk = require('chalk');
// const yosay = require('yosay');
module.exports = class extends Generator {
constructor(args, opts) {
super(args, opts);
}
_createPromiseChain(promiseBuilders) {
return new Promise((resolve, reject) => {
this._chainningPromise(promiseBuilders, null, resolve, reject);
});
}
_chainningPromise(promiseBuilders, parentPromise, mainPromiseResolve, mainPromiseReject) {
if (!parentPromise) {
parentPromise = Promise.resolve();
}
let isLastOnChain = ((promiseBuilders) && (promiseBuilders.length === 1));
if ((promiseBuilders) && (promiseBuilders.length > 0)) {
let nextPromiseBuilder = promiseBuilders.shift();
parentPromise.then(() => {
let nextPromise = nextPromiseBuilder();
if (isLastOnChain) {
return nextPromise
.then(mainPromiseResolve)
.catch(mainPromiseReject);
}
this._chainningPromise(promiseBuilders, nextPromise, mainPromiseResolve, mainPromiseReject);
return nextPromise;
});
}
return parentPromise;
}
};