Изучаю промисы. Подскажите, пожалуйста, как выполнить такую задачу:
Вывод даты через секунду после начала выполнения, потом через 2, потом через 6, и т.д.
После первого вывода даты перевожу промис в статус fullfilled
, далее правильно дата выводиться через 2 сек, но потом следующая дата выводиться через 4 сек (а должна через 6 сек.), т.е следующий промис не дожидается выполнения предыдущего (в смысле выполнения logDate
метода). Как заставить его ждать ?
Делаю так:
let promise = new Promise((resolve, reject) => {
setTimeout(() => {
logDate();
resolve();
}, 1000);
});
promise
.then(() => {
setTimeout(() => {
logDate();
}, 2000);
})
.then(() => {
setTimeout(() => {
logDate();
}, 6000);
});
function logDate() {
console.log(new Date());
}
Чтобы попасть во второй then после выполнения таймаута надо в первом возвращать промис, и резолвить его по окончанию таймера:
let promise = new Promise((resolve, reject) => {
setTimeout(() => {
logDate();
resolve();
}, 1000);
});
promise
.then(() => {
return new Promise((resolve, reject) => {
setTimeout(() => {
logDate();
resolve();
}, 2000);
});
})
.then(() => {
setTimeout(() => {
logDate();
}, 6000);
});
function logDate() {
console.log(new Date());
}
Еще пример сокращения и читабельности вашего кода:
logDate()
.then(() => logDate(2000))
.then(() => logDate(6000));
function logDate(delay = 1000) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(new Date());
resolve();
}, delay);
});
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Добрый день, есть CANCAS на этом сайте, как сделать такой же эффект космоса, либо можно ли изъять его с этого сайта?
Как удалить две записи (id) за один запрос? Пример:
Доброго времени суток, есть скрипт который подключается средством API к банку и выводит курс валют, скрипт выводит только одну валюту USD, как...
В $_GET['key'] из формы передается строка символов введенных с клавиатурыВ БД нужно найти все записи, в которых встречается такая подстрока