Код, который выполняется после цикла, хочется вынести из функции.
Так будет правильно? Можно ли упростить выделенный фрагмент?
Спасибо.
'use strict'
var obj = {count: 0, maxCount: 5};
function doAnything() {
return new Promise(function(resolve, reject) {
setTimeout(function () {
obj.count++;
console.log("doAnything", obj.count);
var testError = false;
if (testError && obj.count==3) {
console.log("doAnything Error!");
reject(new Error("err!"));
}
resolve(obj);
}, 500)
})
}
function isNeedContinue(obj) {
console.log("isNeedContinue", obj, obj.count < obj.maxCount);
return obj.count < obj.maxCount
}
*!*
(new Promise(function (resolve, reject) {
(function _repeat() {
if (isNeedContinue(obj)) {
doAnything().then(
function () {
console.log("Что-то в цикле...");
_repeat();
}, function (error) {
console.log("Ошибка!");
reject(error);
})
} else {
console.log("Конец цикла");
resolve(obj);
}
})()
}))
*/!*
.then(function (res) {
console.log("Что-то после цикла...", res);
})
.catch(function (err) {
console.log("Fail", err);
throw err;
});