обратные вызовы — функции в основном используются в JavaScript, и есть ситуации, когда вам нужно вызывать функцию одну за другой или вызывать функцию внутри другой функции.
- так что для того, где обратные вызовы появляются на картинке, где вы можете передать определенную функцию во время вызова другой функции (в качестве аргументов), где вы имеете контроль над несколькими функциями.
- который помогает создать логику, например. какую функцию вызывать или не вызывать, зависит от ситуации без написания дополнительной строки кода.
Асинхронный — это термин, который определяет, что некоторому коду требуется время для возврата вывода, который также называется «производящим кодом». например. извлечение файла или данных из базы данных и API и многое другое. И JavaScript этого не ждет, JavaScript просто выполняет/запускает код, написанный в следующей строке, параллельно с «производством кода».
/* setTimout() is a javascript method commanly used for
promise example,because its consume time for execute.
if dont known about it first refer it */
// Asynchronous disadvantage
let a = 20;
let b = 0;
//this function take 2 sec for output (2000 millisecond)
// here setTimeout() is a async/producing code because it takes some time
setTimeout(() => {
b= 30;
}, 2000);
/* console.log() is a consuming code, bcz value of b is
change and this change value is used by console.log */
console.log(a+b); // incorrect output 20
из приведенного выше кода мы узнаем, что некоторый код/функция (например, setTimeout() в приведенном выше коде) требует времени для возврата/вывода данных, называемых асинхронным или производящим кодом, и JavaScript параллельно выполняет следующий код, в дальнейшем это дает неверный результат в то время как этот ответ / вывод, используемый другим блоком кода (например, console.log в приведенном выше коде), также называется «потребляющим кодом». чтобы справиться с этим JavaScript promise(), приходите на ум.
Промисы — промисы — это экземпляр или метод для обработки асинхронного программирования. как? асинхронный или производящий код, написанный внутри обещания, и обещание позволяет выполнять определенный код только в том случае, если обещание возвращает какой-либо ответ в виде данных или ошибки, возвращаемой/выводимой асинхронным кодом. так что ответ, используемый конкретным кодом не создает неверный результат
вы можете использовать обещание, когда коду требуется время для выдачи/возврата вывода (асинхронный код).
/* setTimout() is a javascript method commanly used for
promise example,because its consume time for execute.
if dont known about it first refer it */
// async code handle with promise
let a = 20;
let b = 0;
let waitData = new Promise((resolve, reject)=> {
setTimeout(() => {
b = 30
resolve(b)
}, 2000);
})
waitData.then((resolveData) => {
// .then() method recieves the response from promise
b=resolveData;
console.log(a+b); // output 50
});
- Объяснение синтаксиса обещания: обещание передает две функции обратного вызова в качестве аргументов, а функция внутри него принимает эти две функции обратного вызова в качестве параметров. 1-й параметр разрешает, 2-й параметр отклоняет. разрешать термины как успех и отклонять термины как ошибку. Любое имя может использоваться вместо разрешения и отклонения по выбору кодера, вы можете использовать (res, err) или (зеленый, красный) что угодно.
- разрешить и отклонить не решает само обещание. зависит от логики, кодировщик решит, что в ответ какое обещание вернет resolve() или reject().
- Методы resolve() и reject() в обещании работают как ключевое слово return в обычной функции. это ответ, а также конец обещания.
- после получения ответа от promise конкретный код выполняется и использует данные ответа, которые помогут вам получить точный результат.

- обещание вернуть ответ в форме ЗНАЧЕНИЕ или ОШИБКА. ДАННЫЕ вернутся с помощью метода resolve(), а ОШИБКА вернётся с помощью метода reject(). после ответа, независимо от значения или ошибки, обещание выполнить код, который использовал ответ обещания, написанный в методах .then(), .catch() соответственно.
- вы получите приведенный ниже пример кода в разделе «complete promise code».
// Complete Promise code
let a = 20;
let b = 0;
let waitData = new Promise((resolve, reject)=> {
setTimeout(() => {
b = '30a' // b= 30
if(typeof b == 'number') {
resolve(b);
} else {
reject('sorry, b is not a number');
}
}, 2000);
})
// using both .then() & .catch() method
waitData.then((resolveValue) => {
b=resolveData;
console.log(a+b);
}).catch(
(rejectValue) => {
console.log(rejectValue);
})
// instead using only .then() method
waitData.then((resolveValue) => {
b=resolveValue;
console.log(a+b); // output 50
},
(rejectValue) => {
console.log(rejectValue); // output sorry, b is not a number
})
Как использовать обещание?
- обещание назначить в переменной, действовать как объект.
- обещание используется как возврат функции.
// promise assign in a variable act as object
let myPromise = new Promise((resolve, reject)=> {
// Simulate an asynchronous operation (e.g., API call, database query)
setTimeout(() => {
b = 30
resolve(b)
}, 2000);
})
myPromise.then();
// promise is used as a function return.
function asyncOperation() {
return new Promise((resolve, reject) => {
// Simulate an asynchronous operation (e.g., API call, database query)
setTimeout(() => {
const randomNumber = Math.random();
if (randomNumber < 0.5) {
resolve("Operation successful!");
} else {
reject(new Error("Operation failed!"));
}
}, 2000);
});
}
asyncOperation().then()
Асинхронное/ожидание —
first Ключевое слово Async — просто напишите async перед любой функцией, это заставит функцию вести себя как промис, а то, что возвращает функция, будет вести себя как resolve(). нет места для reject() и catch().
- async/await — это еще одна форма обещания, но работающая хитрым образом.
// using async keyword with normal function
async myasync () {
}
// using async keyword with arrow function
const myasync = async () => {
let reswait = 10 + 11;
return reswait;
};
myasync().then((getres) => {
console.log("success", getres);
})
//no place for .catch()
- Await ключевое слово — await удерживает следующую строку для выполнения, если функция/метод возвращает промис. await - это не обещание, а обещание помочь остановить выполнение кода следующей строки, пока обещание не даст какой-либо ответ. поэтому мы можем сказать, что await работает как метод .then(), разница в том, что .then() содержит блок кода, а await содержит следующую строку кода.
- жду только работы
- await работает только внутри асинхронной ключевой функции и await работает только перед обещанием ex. awaitновое обещание(), или метод, возвращающий обещание, например. awaitfetch(), response.json(), XMLHttpRequest(), writeFile(), axios.get() и многое другое. самая важная строка, прочтите ее еще раз. wait поддерживает только обещание, так что вы можете применить последовательность обещаний с меньшим количеством кода.
- синтаксис: ожидание выборки('URL');
- await останавливает выполнение следующей строки, означает, что ему не нужен метод .then(). await позволяет выполнить следующую строку только после того, как fetch() или какая-либо другая функция вернет ответ в виде обещания.
// simple function that return promise
const pf = () => {
return new Promise((res, rej) => {
setTimeout(() => {
//..some code
res(35);
}, 3000);
});
}
const myasync = async () => {
let reswait = 10 + 11;
let result = await pf(); // try removing await
//you dont need .then now because await is there
/* result.then((result) => {
console.log("result", result);
}); */
console.log("result", result); // output <pending> if await remove
console.log(reswait);
};
myasync();
- поэтому мы можем сказать, что .then() и await - это две разные вещи. просто объясните с упр. В Car, paddle break и hand-break оба выполняют одну и ту же работу, но выполнение и вывод могут различаться, а где и когда применять, зависит от ситуации, как и в асинхронном JavaScript, обещание — это автомобиль .then() и await оба разные, но выполняют одну и ту же работу «удерживает код для выполнения до тех пор, пока обещание не вернет некоторый ответ», просто приложение отличается, например, когда и где применять, зависит от вашей логики.