Привет, ребята, мне трудно понять, как асинхронно и ждут работы за кулисами. Я знаю, что мы имеем promises, которые делают наш неблокирующий код, используя функцию "then", мы можем поместить всю работу, которую мы должны выполнить после того, как обещание будет разрешено. и работа, которую мы хотим сделать параллельно, чтобы обещать, мы просто напишем ее за пределами нашей тогдашней функции. Следовательно, код становится неблокирующим. Однако я не понимаю, как async
await
делает неблокирующий код.
async function myAsyncFunction() {
try {
let data = await myAPICall('https://jsonplaceholder.typicode.com/posts/1');
// It will not run this line until it resolves await.
let result = 2 + 2;
return data;
}catch (ex){
return ex;
}
}
См. приведенный выше код. Я не могу двигаться вперед, пока не будет разрешен вызов API. Если это делает мой код блокировки кода, как он лучше, чем promises? Или что-то я пропустил о async
и await
? Где я могу поместить свой код, который не зависит от ожидающего вызова? поэтому он может продолжать работать без ожидания выполнения выполнения?
Я добавляю код Promise, который хотел бы реплицировать в примере ожидания async.
function myPromiseAPI() {
myAPICall('https://jsonplaceholder.typicode.com/posts/1')
.then(function (data) {
// data
});
// runs parallel
let result = 2 + 2;
}