私はJavaScriptを学び始めたばかりで、関数への同期呼び出しと非同期呼び出しの組み合わせについて質問があります。これは単なる理論上の問題になりますが、アイデアが伝わることを願っています。
購入する必要があるバナナとオレンジの数を決定する JavaScript プログラムがあるとします。
console.log('buy %d bananas and %d oranges', bananas, oranges)
これで、バナナを何本買えるか決められるようになりましたが、妻にオレンジが何個欲しいか尋ねなければならないので、彼女にテキスト メッセージを送信します。(これを表す非同期関数を書くことができます)。
これは私の当面のアプローチです:
var bananas = 10;
var oranges = 0;
textWife('askAboutOranges',function(number){ oranges = number; }
console.log('buy %d bananas and %d oranges', bananas, oranges)
しかし、私には意味がありません。妻の返事を待たなければならないので、オレンジの数が間に合わないかもしれません。
したがって、プログラムを次のように変更できます。
var bananas = 10;
var oranges = 0;
textWife('askAboutOranges',function(number){
oranges = number;
console.log('buy %d bananas and %d oranges', bananas, oranges);
}
しかし、妻からの応答の中に、バナナを含めて何を購入するかを決定するロジックがあるため、これは好きではありません。オレンジはいらないと決めたら、次のようにしなければなりませんか?
var bananas = 10;
var oranges = 0;
if (wantOranges)
{
textWife('askAboutOranges',function(number){
oranges = number;
console.log('buy %d bananas and %d oranges', bananas, oranges);
}
}
else
console.log('buy %d bananas and %d oranges', bananas, oranges);
だから私の質問は、誰かが私にこのようなことをするための最良/正しい方法を説明できますか?