一部の言語は、この問題に対処するための特別な言語構造を提供します。たとえば、C#にはasync
があります / await
同期APIを呼び出しているかのようにコードを記述できるキーワード。
JavaScriptはそうではなく、createAccount
をチェーンする必要があります コールバックを使用した呼び出し。
このコードを整理するのに役立つライブラリを開発した人もいます。例: async
、ステップ
、 node-promise
および
ファイバー を使用することもできます ライブラリ、ファイバー/コルーチンを使用してJavaScriptランタイムを拡張するネイティブライブラリ。
また、async
に似た構造で言語を拡張した人もいます。 / await
: streamline.js
、 IcedCoffeeScript
または_
を使用します 特別なコールバックプレースホルダーとして、例を次のように記述できます:
var db = MongoClient.connect("mongodb://localhost:27017/bq", _):
var accounts = db.createCollection('accounts', _);
createAccount("bob","bob", _);
createAccount("bob","bob", _);
createAccount("bob","bob", _);
createAccount("bob","bob", _);
function createAccount(email, password, _) {
var item = accounts.findOne({"email":email}, _);
if (item === null) {
accounts.insert({"email":email, "password":password}, _);
console.log("Account " + email + " created."); }
} else {
console.log("Account already exists.")
}
}
そして、最後になりましたが、ジェネレーター
などの新しい言語機能 および
したがって、多くのオプションがあります:
- コールバックに固執する
- ヘルパーライブラリを使用する
- ファイバーランタイム拡張機能を使用する
- 言語拡張機能を使用する
- ES6を待つ