import * as cp from "child_process";
function promisifiedSpawn(cmd, spawnArgsArray){
return new Promise((resolve, reject) => {
const cp = cp.spawn(cmd, spawnArgsArray);
cp.on("exit", onExit.bind(this, resolve, reject));
}
}
function onExit(resolve, reject, code, signal){
if(code === 0 && signal === null){
return resolve();
} else {
return reject(new Error(`Child process exited unexpectedly with code ${code} and signal ${signal}`));
}
}
promisifiedSpawn("/usr/bin/some_program", ["one", "two"])
.then(() => console.log(`Child process exited healthily!`))
.catch(console.error);
function slowlyIncrement(num, target){
return new Promise((resolve, reject) => {
num++;
if(num < target){
setTimeout(() =>{
resolve(slowlyIncrement(num, target));
}, 100);
} else {
resolve();
}
});
}
From https://gist.github.com/anvk/5602ec398e4fdc521e2bf9940fd90f84
[1,2,3].reduce((promise,item) => {
return promise.then(() => {
return new Promise((resolve, reject)=> {
resolve(item);
})
})
}, Promise.resolve())