提供したサンプルのようなコードの場合:
var toAddress = '';
if(j==1)
{
toAddress="abc@mydomain.com";
}
else
{
toAddress="xyz@mydomain.com";
}
sendAlertEmail(toAddress);
厳密にシーケンシャルであることは間違いありません。つまり、 の値toAddress
は または のいずれ"abc@mydomain.com"
か"xyz@mydomain.com"
です。
ただし、次のようなコードの場合:
var toAddress = '';
doSomething(function(){
if(j==1)
{
toAddress="abc@mydomain.com";
}
else
{
toAddress="xyz@mydomain.com";
}
});
sendAlertEmail(toAddress);
次に、関数doSomething
が非同期かどうかによって異なります。見つけるのに最適な場所はドキュメントです。2番目に良いのは、実装を見ることです。
が非同期でない場合、コードの実行は基本的にシーケンシャルであり、適切に入力されdoSomething
ていることを確実に確認できます。toAddress
ただし、doSomething
が非同期の場合、通常、コードの実行がシーケンシャルではないと確信できます。これは、非同期関数の基本的な動作の 1 つであるため、すぐに戻り、後で渡された関数を実行します。
関数を操作するすべての関数が非同期であるとは限りません。同期関数の例はforEach
、配列のメソッドです。ただし、すべての非同期関数は関数を引数として受け入れます。これは、非同期操作の最後にコードの一部を実行する唯一の方法だからです。そのため、関数を引数として取る関数を見たときはいつでも、それが非同期かどうかを確認する必要があります。