Когда или кто передает решение и отклоняет функции к обещаниям JS?

Я начал изучать обещания javascript. Но я просто не понимаю понятия обещаний. Меня больше всего беспокоит то, кто передает функцию getImage (url) {return new Promise (функция (разрешение, отклонение)) {var img = new Image () img.onload = function () {resolve (url)} img. onerror = function () {reject (url)} img.src = url})} r и getImage ('doggy.jpg'), затем (function (successurl) {document.getElementById ('doggyplayground'). innerHTML = '< img src = "'+ successurl +'" /> '}). catch (function (errorurl) {console.log (' Ошибка загрузки '+ errorurl)}) для конструктора обещаний?

См. Этот пример обещания:

reject

Теперь кто выполняет методы разрешения и отклонения, так как мое понимание javascript говорит мне, что этот скрипт будет генерировать неизвестные ошибки переменных, поскольку разрешение и отклонения не определены?

resolve

Теперь вы видите метод, подобный описанному выше, единственный способ, которым эти методы (разрешить и отклонить) передаются, - это через и затем уловить, как используется в вышеприведенном вызове метода getImage.

javascript,promise,

4

Ответов: 3


3 принят

Меня больше всего беспокоит то, кто передает функцию Resolver и Reject в конструктор обещаний?

Никто.

Функции передаются от конструктора обещания.

Они также прошли в функцию вы передаете в качестве первого аргумента конструктора обещания.


2

Конструктор Promise инициализируется обратным вызовом, и конструктор проходит rejectи resolveкак параметры при вызове обратного вызова.

Вот простая демонстрация:

class PromiseDemo {
  constructor(cb) {
    cb(this.resolve.bind(this), this.reject.bind(this));
  }
  
  resolve(d) {
    console.log('resolve', d);
  }
  
  reject(d) {
    console.log('reject', d);
  }
}

new PromiseDemo((resolve, reject) => {
  Math.random() > 0.5 ? resolve('1') : reject('1');
});


0

Библиотека обещаний создает и передает эти функции вместе со всеми другими метаданными, необходимыми для отслеживания обещаний и завершения записи, сохранения состояния и прогресса, отмены его и т. Д.

Люди за Bluebird опубликовали некоторую информацию о том, как библиотека работает внутри страны, и вы можете увидеть больше в источнике Bluebird .

JavaScript, обещание,
Похожие вопросы