Полный цикл в digital

Получение результата в Promise

Промис представляет собой объект, в который параметром передается функция, внутри которой нужно размещать наш асинхронный код:

let promise = new Promise(function() {
    // асинхронный код
});

Я записал объект с промисом в переменную promise. В каком-то другом месте кода я могу применить к этой переменной метод then, передав в него функцию с кодом, который должен быть выполнен по завершении асинхронного кода, написанного при создании данного промиса:

promise.then(function() {
    // выполнится при завершении асинхронного кода
});

Я хочу решить для него нашу основную задачу асинхронности: выполнить некоторый код после срабатывания таймера. При этом я не хочу размещать этот код в самом таймере и хочу, чтобы в этот код как-то попал результат, написанный мною в переменной result. Давайте теперь посмотрим, как это сделать через промисы:

let promise = new Promise(function (resolve) {
  setTimeout(function () {
    let result = [1, 2, 3, 4, 5];
    // завершаем промис
    resolve();
  }, 3000);
});

При этом, если мы хотим передать вовне какой-то результат асинхронного кода, мы можем передать его параметром нашей функции завершения:

let promise = new Promise(function (resolve) {
  setTimeout(function () {
    let result = [1, 2, 3, 4, 5];
    // передаем результат
    resolve(result);
  }, 3000);
});

Можно, конечно же, избавится от промежуточной переменной:

let promise = new Promise(function (resolve) {
  setTimeout(function () {
    resolve([1, 2, 3, 4, 5]);
  }, 3000);
});

Теперь в любом другом месте мы можем вызвать метод then нашего промиса. Результат работы промиса попадет в первый параметр функции, если мы пожелаем его указать:

promise.then(function(result) {
  // выведет массив с результатом
  console.log(result); 
});
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг