Lizard-108
@Lizard-108
Ящерица

Как оптимизировать этот код?

var intervalTimer;
    intervalTimer = setTimeout((function() {
      return setTimeout((function() {
        console.log(1);
        return setTimeout((function() {
          console.log(2);
          return setTimeout((function() {
            return console.log(3);
          }), 1000);
        }), 1000);
      }), 1000);
    }), 1000);


Суть в том что после каждой альтерации должна выполнятся определенная программа, консоль логи я вывел просто для примера.
Запихнуть это все в setInterval здесь не вариант
  • Вопрос задан
  • 241 просмотр
Решения вопроса 2
RISENT
@RISENT
fullstack web developer
Чтобы избежать callback hell используйте promise и setTimeout. В таком случае код превращается в линейный:

new Promise(function(resolve){
  setTimeout(function() {
    console.log(1);
    resolve();
  }, 1000);
}).then(function() {
  let nextPromise = new Promise(function(resolve){
    setTimeout(function() {
      console.log(2);
      resolve();
    }, 1000);
  });
  return nextPromise;
}).then(function() {
  let nextPromise = new Promise(function(resolve){
    setTimeout(function() {
      console.log(3);
      resolve();
    }, 1000);
  });
  return nextPromise;
}).then(function() {
   setTimeout(function() {
      console.log(4);
   }, 1000);
});
Ответ написан
@KFan
Веб-программист
var Steps = {
	0: function () {
		console.log(1);
	},
	1: function () {
		console.log(2);
	}
};

var counter = 0;
var intervalTimer = setInterval(function () {
	if (!Steps[counter]) {
		clearInterval(intervalTimer);
		return;
	}

	Steps[counter]();
	counter++;
}, 1000);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
kirill89
@kirill89
Вы уверены, что setInterval вам не подойдет?

var state = 0;
var intervalTimer = setInterval(function () {
  switch(state){
    case 0:
      console.log(1);
      break;
    case 1:
      console.log(2);
      break;
    case 2:
      console.log(3);
      break;
    default:
      clearInterval(intervalTimer);
  }
  state++;
}, 1000);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
RealtimeBoard Пермь
от 90 000 до 140 000 руб.
Smartbics Нижний Новгород
от 50 000 до 70 000 руб.
//stablecode Вена
от 110 000 до 140 000 руб.
20 февр. 2019, в 10:05
1800 руб./за проект
20 февр. 2019, в 09:00
1500 руб./за проект
20 февр. 2019, в 08:11
8000 руб./за проект