mirror of
https://github.com/laurent22/joplin.git
synced 2024-11-30 08:26:59 +02:00
37 lines
687 B
JavaScript
37 lines
687 B
JavaScript
function promiseChain(chain, defaultValue = null) {
|
|
let output = new Promise((resolve, reject) => { resolve(defaultValue); });
|
|
for (let i = 0; i < chain.length; i++) {
|
|
let f = chain[i];
|
|
output = output.then(f);
|
|
}
|
|
return output;
|
|
}
|
|
|
|
function promiseWhile(callback) {
|
|
let isDone = false;
|
|
|
|
function done() {
|
|
isDone = true;
|
|
}
|
|
|
|
let iterationDone = false;
|
|
let p = callback(done).then(() => {
|
|
iterationDone = true;
|
|
});
|
|
|
|
let iid = setInterval(() => {
|
|
if (iterationDone) {
|
|
if (isDone) {
|
|
clearInterval(iid);
|
|
return;
|
|
}
|
|
|
|
iterationDone = false;
|
|
callback(done).then(() => {
|
|
iterationDone = true;
|
|
});
|
|
}
|
|
}, 100);
|
|
}
|
|
|
|
export { promiseChain, promiseWhile } |