anchor.diff:  include::../json/book.json[]
   ----
   
  -次のコードでは、Promiseのみを使って`getBookTitle``関数で取得したタイトルをコンソールに出力しています。
  +まずは、Promise APIを使って``fetchBookTitle``関数で取得したタイトルをコンソールに出力してみます。
   
   [role="executable"]
   [source,javascript]
   ----
  -function getBookTitle(){
  +function fetchBookTitle(){
       // Fetch APIは指定URLのリソースを取得しPromiseを返す関数
       return fetch("/json/book.json").then(function(res){
           return res.json(); // レスポンスをJSON形式としてパースする
  
positive.code: }
  
  function main(){
      getBookTitle().then(function(title){
          console.log(title); // => "JavaScript Promiseの本"
      });
  }
  
negative.code: main();
  ----
  
  次は同様の処理をAsync Functionと``await``式で書いています。
  Promise APIを使っていた場合に比べて、コールバック関数がなくなっていることが分かります。
  
  [role="executable"]
  [source,javascript]
  ----
  function fetchBookTitle(){
      // リクエストしてリソースを取得する
      const res = await fetch("/json/book.json");
      // レスポンスをJSON形式としてパースする
      const json = await res.json();
      // JSONからtitleプロパティを取り出す
      return json.title;
  }
  
  // `async`をつけてAsync Functionを定義
  async function main(){
      // `await`式で`fetchBookTitle`の非同期処理が完了するまで待つ
      // `fetchBookTitle`がresolveした値が返り値になる
      const title = await fetchBookTitle();
      console.log(title); // => "JavaScript Promiseの本"
  }
  
  main();
  ----
  
  Async FunctionではPromiseの状態が変化するまで待つ``await``式という機能を利用できます。
  Promiseでは結果を``then``メソッドのコールバック関数で取得していたのが、``await``式によって同期的な関数と同じように結果を受けとれます。
  そのため、Async Functionと``await``式を使うことで非同期処理をまるで同期処理のように書けます。
  
  この章では、このAsync Functionと``await``式について詳しく見ていきます。
  
  