Автор: Дэн Леви
Перевод: сумасшедший технический ботаник
оригинал:Но levy.net/JavaScript-…
Копирование без разрешения строго запрещено
👇 ответьте на следующие девять вопросов 👇
1. Несколько.catch
var p = new Promise((resolve, reject) => {
reject(Error('The Fails!'))
})
p.catch(error => console.log(error.message))
p.catch(error => console.log(error.message))
Каким будет вывод приведенного выше кода? Пожалуйста, выберите правильный ответ:
-
распечатать сообщение один раз
-
напечатать сообщение дважды
-
UnhandledPromiseRejectionWarning -
выход из программы
Разобрать:
Мы используем метод конструктора для создания промиса, иrejectОбратный вызов немедленно запускает ошибку.
потом.catchРаботает как DOM.addEventListener(event,callback)или генератор событий.on(event,callback), где ** может добавить несколько обратных вызовов. **Каждый вызывается с одинаковыми параметрами.
2. Несколько.catch
var p = new Promise((resolve, reject) => {
return Promise.reject(Error('The Fails!'))
})
p.catch(error => console.log(error.message))
p.catch(error => console.log(error.message))
Каким будет вывод приведенного выше кода? Пожалуйста, выберите правильный ответ:
-
распечатать сообщение один раз
-
напечатать сообщение дважды
-
UnhandledPromiseRejectionWarning -
выход из программы
Разобрать:
При использовании конструктора Promise вы должны вызватьresolve()илиreject()Перезвоните. Конструктор Promise не использует возвращаемое вами значение, поэтому фактически больше не получаетPromise.reject()Созданы другие промисы.
существуетPromise.reject()нет после.catch, ответUnhandledPromiseRejectionWarning.
3. Ссылки.thenа также.catch
var p = new Promise((resolve, reject) => {
reject(Error('The Fails!'))
})
.catch(error => console.log(error))
.then(error => console.log(error))
Каким будет вывод приведенного выше кода? Пожалуйста, выберите правильный ответ:
-
Ошибки печати и
undefined -
печатать дважды ошибка
-
UnhandledPromiseRejectionWarning -
undefined
Разобрать
при связывании.thenа также.catch, полезно думать о них как о последовательности шагов. каждый.thenоба получают предыдущий.thenВозвращаемое значение как его аргумент. Однако, если ваш «шаг» сталкивается с ошибкой, любой последующий.then«Шаги» будут пропущены до.catch. Если вы хотите переопределить ошибку, все, что вам нужно сделать, это вернуть значение, не являющееся ошибкой. любым последующим.thenдоступ.
намекать: console.log()всегда возвращайсяundefined.
4. Ссылки.catch
var p = new Promise((resolve, reject) => {
reject(Error('The Fails!'))
})
.catch(error => console.log(error.message))
.catch(error => console.log(error.message))
Каким будет вывод приведенного выше кода? Пожалуйста, выберите правильный ответ:
-
печатать сообщение об ошибке один раз
-
печатать сообщение об ошибке дважды
-
UnhandledPromiseRejectionWarning
-
выход из программы
Разобрать
при связывании.catch, каждый обрабатывает только предыдущий.thenили ``.поймать“步骤” 中引发的错误。在此例中,第一个.catch返回console.log,只能通过在两个.catch之后添加.then()` для доступа.
5. Несколько.catch
new Promise((resolve, reject) => {
resolve('Success!')
})
.then(() => {
throw Error('Oh noes!')
})
.catch(error => {
return "actually, that worked"
})
.catch(error => console.log(error.message))
Каким будет вывод приведенного выше кода? Пожалуйста, выберите правильный ответ:
-
распечатать сообщение один раз
-
напечатать сообщение дважды
-
UnhandledPromiseRejectionWarning
-
ничего не печатать
Разобрать
намекать: .catchОшибки можно игнорировать (или переопределять), просто возвращая обычное значение.
Этот трюк используется только в последующих.thenДействителен при получении этого значения.
6. .thenпроцесс между
Promise.resolve('Success!')
.then(data => {
return data.toUpperCase()
})
.then(data => {
console.log(data)
})
Каким будет вывод приведенного выше кода? Пожалуйста, выберите правильный ответ:
- выведите «Успех!» и «УСПЕХ!»
- печатать "Успех!"
- печатать "УСПЕХ!"
- ничего не печатать
Разобрать
Подсказка: .then передает данные последовательно, начиная сreturn valueк следующему.then(value => /* handle value */).
чтобы передать значение следующему.then,returnэто ключ.
7. .thenпроцесс между
Promise.resolve('Success!')
.then(data => {
return data.toUpperCase()
})
.then(data => {
console.log(data)
return data
})
.then(console.log)
Каким будет вывод приведенного выше кода? Пожалуйста, выберите правильный ответ:
- печатать "УСПЕХ!"
- печатать "Успех!"
- выведите «УСПЕХ!» и «УСПЕХ!»
- ничего не печатать
Разобрать:
есть дваconsole.logвызов будет вызван.
8. .thenпроцесс между
Promise.resolve('Success!')
.then(data => {
data.toUpperCase()
})
.then(data => {
console.log(data)
})
Каким будет вывод приведенного выше кода? Пожалуйста, выберите правильный ответ:
- печатать "УСПЕХ!"
- печатать "Успех!"
- выведите «УСПЕХ!» и «УСПЕХ!»
-
Распечатать
undefined
Разобрать:
намекать:.thenПередавайте данные последовательно, от возвращаемого значения к следующему.then(value => /* handle value */).
чтобы передать значение следующему.then,returnэто ключ.
9. .thenа также.catchпроцесс между
Promise.resolve('Success!')
.then(() => {
throw Error('Oh noes!')
})
.catch(error => {
return 'actually, that worked'
})
.then(data => {
throw Error('The fails!')
})
.catch(error => console.log(error.message))
Каким будет вывод приведенного выше кода? Пожалуйста, выберите правильный ответ:
-
выведите «О нет!» и «The fails!»
-
печатать "О нет!"
-
print "Провал!"
-
напечатать "на самом деле, это сработало"
-
ничего не печатать
Разобрать: