@zlodiak

Зачем при создании промиса нужно передавать resolve?

Помогите пожалуйста понять почему при создании промиса нужно передавать в функцию-executor аргумент resolve:
const p = new Promise((resolve) => resolve(2));
p.then(resp => {
	console.log(resp)
});

Это рабочий и правильный код.

Мне непонятно почему нельзя записать так:
const p = new Promise(() => resolve(2));
p.then(resp => {
	console.log(resp)
});


Ведь аргумент resolve непонятно откуда появляется(соответственно непонятно чему он равен). Явно его никто не передаёт. Однако без него код не работает...
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 3
Думаю, понятнее будет, если записать функцию в полном виде.

const p = new Promise(
  function (resolve) {
    resolve(2)
  }
);

// vs

const p = new Promise(
  function () {
    resolve(2)
  }
);

Вы видите, что в первом случае resolve - это аргумент коллбека. А во втором - вообще непонятно откуда берется. Вот вы написали как альтернативу второй код.
Ответ написан
Zatmil
@Zatmil
Fullstack-разработчик
Я думаю, что следует почитать про промисы тут
Ответ написан
Ты когда хендлер для ивента на странице пишешь, ивент тоже берешь из аргумента, так и тут. Конструктор Промиса принимает в качестве аргумента функцию, и при вызове передает туда два аргумента: функцию resolve и функцию reject
let pr = new Promise(function(){
	console.log("Arguments", arguments);
})

Попробуй так написать и посмотри на вывод консоли.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы