6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JavaScript async/awaitに関して

Last updated at Posted at 2019-10-02

async/awaitとは?

  • Promiseによる非同期処理を簡潔に記述するための記法。
  • 非同期処理はthenを繋げる形で記載もできるが、async/awaitは可読性を向上させる。

使い方

  1. asyncを付与したfunctionを用意
    asyncを付与するとPromiseを返却し、return後にPromiseがresolveされる。
  2. 上記関数内のPromise処理部分の前にawaitを付与する。
    awaitPromiseが確定するのを待つ役割を持つ。
function sugarPromise(){
  return new Promise(function(resolve) => {
     setTimeout(() => {resolve('hogehoge2')}, 10000)
  });
}

async function sugarSync(){
  const result = await sugarPromise();
  // sugarPromise()内でPromiseが解決するまで次の処理を行わない
  console.log(result);
}

sugarSync();
console.log('hogehoge1');

実行すると

hogehoge1
hogehoge2

となるはず。(1と2は10秒の間隔)

注意点

  • 複数のawaitを記述するとそれぞれ待たないといけない。上記の例を以下の通り書き直すと10秒×3=30秒待たないといけない。
const result1 = await sugarPromise();
const result2 = await sugarPromise();
const result3 = await sugarPromise();

次の通り記載すると並列で処理が可能。

const result1 = sugarPromise();
const result2 = sugarPromise();
const result3 = sugarPromise();
const x1 = await result1;
const x2 = await result2;
const x3 = await result3;
console.log(x1);
6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?