romasovest
@romasovest
~

Как максимально кратко записать цепочку промисов?

Можно ли как-то сильнее сократить простую цепочку промисов? Смущает конструктор new Promise() в каждом шаге, может можно как-то от него избавиться?

// запускаем очередь со стартовым значением 1
Promise.resolve(1)
.then(r => {
	return new Promise(resolve => {
		setTimeout(() => {
			return resolve(r+1);
		},1000);
	});
})
.then(r => {
	return new Promise(resolve => {
		setTimeout(() => {
			return resolve(r+1);
		},1000);
	});
})
.then(r => {
		console.log(r); // 3
})
  • Вопрос задан
  • 141 просмотр
Решения вопроса 2
Lynn
@Lynn
nginx, js, css
Как обычно, вынести повторяющиеся куски кода в отдельную функцию.

const sleep = (delay, val) => new Promise((resolve) => {
    setTimeout(() => {
        resolve(val);
    }, delay);
});

Promise.resolve(1)
    .then(r => sleep(1000, r + 1))
    .then(r => sleep(1000, r + 1))
    .then(console.log);
Ответ написан
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
async function run(start){
	start  = await new Promise(resolve => {
    setTimeout(resolve,1000, start + 1);
  });
  start  = await new Promise(resolve => {
    setTimeout(resolve,1000, start + 1);
  });
  console.log(start);
}
run(1);

https://jsfiddle.net/pvnoatyu/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы