2017-04-16 8 views
0

一連のPOSTリクエストを作成するChrome拡張機能を作成しようとしています。それぞれのパラメータは前回のレスポンスに依存しています。私はフェッチを使ってこれをやっています。私はどのように単一のクエリのコンポーネント間の依存関係を処理するために使用する方法を理解しますが、どのようにクエリ間の依存関係を処理するでしょうか?だから、現在、私の拡張子はクロムエクステンションで一連のPOSTリクエストを連鎖させるにはどうすればいいですか?

fetch('http://localhost:8081/seed/create', { 
     method: 'post', 
     headers: new Headers({ 
      'Accept': 'application/json, text/plain, */*', 
      "Content-Type": "application/json; charset=UTF-8" 
     }), 
     body: '{"name": "nutch","seedUrls":[{"seedList": null,"url": "http://nutch1.apache.org/"}]}' 
    }) 
      .then(function (response) { 
         return response.text(); 
      }) 
      .then(function (text) { 
       seed = text; 
       console.log(seed); 
       document.getElementById("post").innerHTML = "responsePost: " + seed; 

      }) 
      .catch(function (error) { 
       console.log('FAIL: ', error); 
      }); 

}); 

のようなコードを持っているが、私は、最初から成功を待ち、そして以前の応答とそのペイロードを投入しなければならない二POSTリクエストが必要です。任意のヒント??感謝! ありがとう!

+1

最後に.thenをもう一度付けてください。または、[async await]を使用してください(https://developers.google.com/web/fundamentals/getting-started/primers/async-functions) –

+0

ありがとう、私はそれを試してみる:) –

答えて

0

私は自分の質問に答えるつもりです[OK]を - 私は(少なくとも私に!)ダニエルのアドバイスを取り、asyncsを使用し、約束より読みずっと簡単である:

async function getNutch(url) { 

var response; 
try { 
    response = await fetch(url + "seed/create", { 
     method: 'post', 
     headers: new Headers({ 
      'Accept': 'application/json, text/plain, */*', 
      "Content-Type": "application/json; charset=UTF-8" 
     }), 
     body: getPayload(payloadEnums.SEED) 
    }); 
    seedDir = await response.text(); 
    console.log(seedDir); 
} catch (err) { 
    console.log('fetch failed: ', err); 
} 
try { 
    response = await fetch(url + "job/create", { 
     method: 'post', 
     headers: new Headers({ 
      'Accept': 'application/json, text/plain, */*', 
      "Content-Type": "application/json; charset=UTF-8" 
     }), 
     body: getPayload(payloadEnums.JOB) 
    }); 
    console.log(await response.text()); 
} catch (err) { 
    console.log('fetch failed: ', err); 
} 

}

は、2つのクエリを順番に実行し、最初のクエリが完了するまで待つ必要があります。これが私が望むものです。この依存関係がない場合は、ダニエルが提供するリンクの説明に従って、クエリを並列に実行する必要があります。

関連する問題