Показать сообщение отдельно
  #8 (permalink)  
Старый 12.07.2017, 20:39
Интересующийся
Отправить личное сообщение для SergeyERjs Посмотреть профиль Найти все сообщения от SergeyERjs
 
Регистрация: 03.07.2017
Сообщений: 19

Код, который выполняется после цикла, хочется вынести из функции.
Так будет правильно? Можно ли упростить выделенный фрагмент?
Спасибо.
'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;
	});
Ответить с цитированием