私はこの問題を理解する方法を探していましたが、私の検索スキルが上手くいかない場合はお詫びします。連鎖してES6の呼び出しを呼び出す
私の問題:私はAPIをフェッチしており、すべてのデータが完全にロードされた時点を知りたいと思います。ドキュメントを読んで、私はフェッチでステートメントをチェーン化できると思われ、それはうまくいくと思っていました。しかし、彼らはすべて、前のことを待つことなく、同時に終了するように見えるように見える。
は、ここに私のコードです:それは非同期である場合
fetch(myUrl, {
method: 'post',
headers: {
'Content-Type': 'application/json; charset=utf-8',
},
credentials: 'include',
body: data
})
.then(fetchStatus)
.then(json)
.then(function(msg){
showSearchResults();
setTimeout(function(){ console.log("Next then should fire after this"); }, 4000);
})
.then(function(){
return console.log("The 2nd is firing!");
});
function fetchStatus(response) {
if (response.status >= 200 && response.status < 300) {
return Promise.resolve(response)
} else {
return Promise.reject(new Error(response.statusText))
}
}
function json(response) {
return response.json()
}
は、これは素晴らしいですが、これらのイベントは、私が以前で作成されたコンテンツを操作しようとしていますという事実による同期する必要がありますコール、showSearchResults();
ご迷惑をおかけして申し訳ありません。
...:あなたが連鎖
setTimeout
のオフ.then
する場合は同様に、あなたのような何かを書くことができ} '関数表記法。それは多くの冗長を省くことができ、 'var self = this'のダンスを避けることができます。 – tadman
Promise.allの 'showSearchResults'をラップし、解決するまで待ちます – maioman
問題が何であるか不明です。単一の 'fetch'呼び出しがあり、そのチェーンの各ハンドラは前の呼び出しが実行された後にのみ実行されます。何が問題なの? (showSearchResultsに何らかの引数を与えてはいけませんか?) –