Что на самом деле разрешают и отклоняют в Javascript Promise - PullRequest
1 голос
/ 15 марта 2020

Сначала я думаю, resolve просто передает параметр в функцию в then, поэтому я попробовал это

const promise = new Promise((resolve, reject) => {
  resolve(new Promise(resolve => resolve(2333)))
})
// promise.then(innerPromise => {
//   innerPromise.then(num => console.log(num))
// })
promise.then(num => console.log(num))

Строки с комментариями получили ошибку: innerPromise.then is not a function, поэтому я предполагаю resolve в первую очередь поможет вам выполнить обещание внутри, если у вас есть обещание в качестве параметра

Итак, я попробовал reject, я думаю, что это будет то же самое

const promise = new Promise((resolve, reject) => {
  reject(new Promise(resolve => resolve(2333)))
})
promise.then(null, innerPromise => {
  innerPromise.then(num => console.log(num))
})
// promise.then(null, num => console.log(num))

Строки без комментариев будет записан 2333, закомментированные строки будут просто записывать отклоненный Promise экземпляр

Ответы [ 2 ]

0 голосов
/ 15 марта 2020

По определению, разрешение может принимать значение и допустимое значение. Если значение доступно, оно разрешит и вернет состояние. Тем не менее, отклонить только принять в качестве значения. Даже если ценность это обещание (жизнеспособность). Это не разрешит его.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve

Аргумент, который будет разрешен этим Обещанием. Также может быть Обещанием или разрешением, которое можно разрешить

Метод Promise.resolve () возвращает объект Promise, который разрешен с заданным значением. Если значение является обещанием, это обещание возвращается; если значение является thenable (то есть имеет метод then), возвращаемое обещание будет «следовать» за последующим, принимая его возможное состояние; в противном случае возвращенное обещание будет выполнено со значением. Эта функция объединяет вложенные слои объектов, подобных обещанию (например, обещание, которое превращается в обещание, которое разрешается во что-то), в один слой.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/reject

Метод Promise.reject () возвращает объект Promise, отклоненный по заданной причине.

0 голосов
/ 15 марта 2020

Resolve - это обратный вызов, используемый для возврата значения или результата другого обещания.

Поэтому, когда вы выполните приведенный ниже код в первом блоке:

const promise = new Promise((resolve, reject) => {
  resolve(new Promise(resolve => resolve(2333)))
})

promise.then(innerPromise => {
      console.log(innerPromise)
//    innerPromise.then(num => console.log(num))
})

promise.then(num => console.log(num))

Вы найдете внутренний функции выполняются автоматически с помощью Resolve, таким образом, получая конечный результат от функции внутри разрешения. Во-вторых, четко указано, что Resolve возвращает 'Value' , а не вызываемый объект. Таким образом, вы не можете вызвать результат обещания как функцию.

В случае отклонения обратный вызов используется для отклонения обещания с указанием причины или ошибки. Вы можете вернуть любой оператор (представляющий ошибку) или вызываемый объект, который возвращает вам сообщение об ошибке из кода ошибки. (Вот как я использую Отклонить для извлечения сообщений из сгенерированных кодов ошибок)

Ну, вы можете прочитать больше здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...