Понимание конструктора Promise в JavaScript - PullRequest
0 голосов
/ 07 февраля 2020

Вот фрагмент кода из MDN Promise page .

let myFirstPromise = new Promise((resolve, reject) => {
  // We call resolve(...) when what we were doing asynchronously was successful, and reject(...) when it failed.
  // In this example, we use setTimeout(...) to simulate async code. 
  // In reality, you will probably be using something like XHR or an HTML5 API.
  setTimeout( function() {
    resolve("Success!")  // Yay! Everything went well!
  }, 250) 
}) 

В приведенном выше коде я не понимаю, где находится определение функции resolvereject )? Здесь мы просто передаем resolve в качестве параметра конструктору Promise, а затем вызываем его, когда мы делаем resolve("Success!"), так где же определено resolve?

1 Ответ

1 голос
/ 07 февраля 2020

Несколько частей к этому, во-первых, это функция стрелки , поэтому:

(resolve, reject) => {}

сокращенно (и некоторые другие вещи вокруг this, et c ):

function(resolve, reject){}

Итак, вы передаете функцию в качестве параметра в другую функцию. Функции объектов в JavaScript. Так что, если вы представляете реализацию Promise, она может выглядеть примерно так (не фактическая реализация):

Promise(callBackFunction){
    ...//do some things
    callBackFunction(resolve, reject); 
}

Итак, callBackFunction - это функция, которую вы передали используя функцию стрелки, и когда обещание дойдет до соответствующей точки в коде, оно вызовет вашу функцию и передаст ее resolve, reject. resolve и reject также являются здесь функциональными объектами.

, поэтому, где точно определено разрешение

Внутри кода Promise.

...