Обещания имеют два аргумента, resolve
и reject
, которые используются для отправки ответа обратно на вызывающий код.Если ваше обещание выполнило свой код без ошибок, то вы resolve()
отправили ответ (он может быть любым, каким вы хотите), а если вместо этого произошел сбой, вы reject()
отправили ошибку, как параметр.
Параметр функции разрешения будет отправлен обратно в вызывающую функцию в обратном вызове затем , а параметр функции отклонения можно найти в обратном вызове catch ,
Например,
function myFunction(){
return new Promise((resolve, reject) => {
try{
/* Do some async calls here */
resolve(result); //Result is what you will find in "then"
}catch(e){
reject(e);
}
});
}
myFunction().then((response) => {
/* Your logic here*/
}).catch((err) => {
console.error(err);
}
Вы можете представить resolve
как return
в асинхронном контексте, в то время как reject
похож на throw
с исключением, которое будетбыть пойман вызывающим кодом.
Таким образом, resolve(myVariable)
вернет myVariable
коду, который вызвал функцию обещания, в то время как resolve('aaa')
всегда вернет "aaa" к вызывающему коду.