19 Ocak 2020 Pazar

async function Anahtar Kelimesi

Giriş
Açıklaması şöyle.
We have the async function and the await operator. When we use them together we get a new way to structure and work with Promises that makes our code a whole lot easier to work with.
async function Promise döner.

await yazısına göz atabilirsiniz.

async Function Nedir
Daha sonra çalıştırılmak üzere bir diziye callback eklemek gibidir. Açıklaması şöyle.
async functions run synchronously when they called until the first await statement.
Elimizde şöyle bir kod olsun
async function doSomething() {
  ...
}
İki tane dosomething() çağrısı şöyledir.
                ┌───┬──────┬───┐
doSomething(1)  │   │ WAIT │   │
                └───┴──────┴───┘
                    ┌───┬──────┬───┐
doSomething(2)      │   │ WAIT │   │
                    └───┴──────┴───┘
                ├───────────────────────────────▶ time
Örnek
Elimizde şöyle bir kod olsun.
(async () => {... })();
Şu kod ile aynıdır.
let callbacks = [];

callbacks.push(() => {...});

callbacks.forEach(cb => {
  cb();
});
async function Tanımlama
Şöyle yaparız.
async function findSomething(id) {
  var query = "my_query";
  return connection.query(query);
};
async function Çağırma
Örnek
Şöyle yaparız.
var result = (async (global) => {
  // other code here (includes await's; thus the async)
  return 123;
})(this);

result.then((res)=> console.log(res));

async function içinde await
Örnek
Elimizde şöyle bir kod olsun
async function doSomething() {
  const result = await doExpensiveOperation()
  const result2 = await doAnotherExpensiveOperation()
  return { result, result2 }
}
Bu kod aslında şöyle de yazılabilirdi. İki tane doSomething() çağrısı paralel çalışabilir. Ancak doSomething() kendisi çalışırken her şeyi sıralı yapar. Önce doExpensiveOperation() çalışır sonra doAnotherExpensiveOperation()
function doSomething() {
  return doExpensiveOperation().then(result => {
    return doAnotherExpensiveOperation().then(result2 => {
      return { result, result2 }
    })
  })
}
Örnek
Şöyle yaparız. Burada async içinde await() kullanılıyor.
let i = 3;

(async () => {
  while (i) {
    await Promise.resolve();
    console.log(i);
    i--;
  }
})();
Çıktı olarak şunu alırız.
3
2
1
Örnek
Şöyle yaparız. Burada async içinde await() kullanılıyor.
let x = 0;

async function test() {
  // Enter asynchrony
  await 0;

  x += 5;
  console.log('x :', x);
}

test();
x += 1;
console.log('x :', x);



Hiç yorum yok:

Yorum Gönder