Пытаюсь разобраться в промисах и async/await
. Нашёл на хабре этот пример:
async function getAmount2(userId){
let user =await getUser(userId);
let amount = await getBankBalance(user);
alert(amount);
}
getAmount2("1");
function getUser(userId){
return new Promise((resolve)=>{
setTimeout(()=>{
resolve("John");
}, 10);
});
}
function getBankBalance(user){
return new Promise((resolve, reject)=>{
setTimeout(()=>{
if(user=='John'){
resolve("1,000$");
}else{
reject("Unknown user!");
}
},10);
});
}
resolve
и/или reject
, которые и будут вызываться в промисе. А здесь никакие функции не передаются, но промисы выполняются, и переменные получают свои значения. Но почему? Ведь в этом примере ни resolve
, ни reject
не реализованы
Обратите внимание на документацию: resolve, как и reject - это методы, которые вы вызываете и в качестве аргумента передаёте значение, с которым промис будет выполнен или не выполнен. Вы, конечно, можете передать и функцию в качестве значения, но она не будет коллбэком, не будет вызвана, если только при обработке результата промиса вы не вызовете её сами.
Так что да, пример корректный, потому и работает.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как пронумеровать все абзацы страницы и добавить номер ПЕРЕД текстом абзацев, а не после ?
Прошу помощиКак создать таблицу и заполнить значениями,а столбец address вывести city + street (т