web-dev-qa-db-ja.com

JS:即時メソッドと非同期メソッドを区別するための規約

私は通常、メソッドの命名規則にlaissez faireの態度を持っていますが、現在、値を直接返すことができるいくつかのメソッド(即時/プレーン関数)とその他の必要があるJavaScriptのモジュールに取り組んでいます非同期であり、コールバック/プロミス/などを通じて動作します.

私は、メソッド名がどちらであるかを明確にすることが望ましいと思います。そのような命名規則はすでにそこにありますか?

それとも、コールバックを必要としないメソッドでもコールバックを使用するだけですか?

2
wberry

ここに当てはまる慣例は1つではありません。いくつかのスタイルガイドを参考にして回答を得ることができますが、おそらく著者の個人的な経験に基づいて異なる回答が得られます。

コールバック(ボタンのクリック、イベントなど)の場合、メソッド名にon接頭辞を使用するのが一般的です。これは通常、メソッド/関数がonを実行するコールバックであることを示唆します出来事

function onClick(event) { ... }

HTML要素は、たとえば input#onchange 入力の値が変更されたとき、または window#onload ウィンドウがロードされたときに発生するコールバック。

[〜#〜] html [〜#〜]

<input type="text" value="" onchange="onChange()">

[〜#〜] js [〜#〜]

function onChange() {
    console.log("i was changed");
}

Promiseには特定の命名規則はありませんが、変数名にヒントを付けることができます

var getDataPromise = new Promise(...);

もちろん、A +の不満の約束は .then メソッドは、関数がpromiseを返すことも示唆します。

同じ関数の2つのバージョンがある場合、開発者がAsyncをアタッチすることも確認しました

function getData() {...}
function getDataAsync() {...}

また、他のあいまいさを解消するために、コードにコメントを残すか、各関数/メソッドが受け入れて返すものを説明するドキュメントを作成することをお勧めします。

2
svarog

あなたが説明していることは、ES2017の作業にすでに含まれているようです async 関数と呼ばれます。したがって、「async」キーワードは、それがどのタイプの関数であるかを完全に明確にします。この「非同期」の使用は、非同期であることを保証するものではありませんが、明らかに可能性があります

それまでは、@ DerekElkinsで言及されているC#の規則に従い、非同期で呼び出されることを意図した関数名の最後にAsyncを追加することに何の問題もありません。

1
Neil