loadFile.Openがtrue(async)に設定されているxhr()関数の戻り値としてloadFile.responseText
を返す方法...同期(false)として要求を設定すると、値が返されます。私はこれがなぜ起こるのか理解していますが、非同期設定でこれを達成する方法があるのか疑問です。非同期のxhrリクエストで値を返す方法は?
loadFile.open("GET", url, true); // no response
全体の機能:
function xhr(url, async){
var data = '';
var loadFile = new XMLHttpRequest();
loadFile.overrideMimeType("application/json");
loadFile.open("GET", url, false); // when true, no value is returned (of course)
loadFile.onreadystatechange = function() {
if (loadFile.readyState === 4 && loadFile.status == "200")
{
data = JSON.parse(loadFile.responseText);
return data;
}
}
loadFile.send(null);
return loadFile.onreadystatechange();
}
私はこの答えを探していると、このHow do I return the response from an asynchronous call?を発見し、それが重複ではありませんました。
必要に応じて方向を完全に変更しても構いません。あなたは、実際の基本的な例や、それを達成するためにどのような方法を提案するのかを助けることができますか?
あなたがすでに答えを見つけた場合(あなたがしようとしていることは不可能なので)、あなたはそれについて何を理解しませんでしたか?コールバックや約束を使ってみましたか?あなたの試行を見せてください。そうでなければ、カノニカルを繰り返す以上のことはできません。 – Bergi
他のスレッドで尋ねられた質問は同じではありません。私は具体的にそれをどうやって行うのかを尋ねています。提案?コールバックや約束の例?私は、既存の関数のエラーを修正するつもりはありません。他のスレッドに提案やコメントがありますか? – GRowing
何をやっていくの?非同期関数から値を返すか?それをしてはいけない。提案:代わりにコールバックまたは約束を使用してください。例:[There](http://stackoverflow.com/a/30180679/1048572)は非常に多くあります。 – Bergi