人々は cb() をどこから入手しているのでしょうか。これは Node のものですか、それとも vanilla JS のものですか?
例えば:
Promise、ジェネレーター、その他のアプローチで Node.js のコールバック地獄を管理する
cb() を使用してコールバックし、コールバック関数の sig に応じてエラーまたは値、あるいはその両方を返すのでしょうか?
ベストアンサー1
cb
あなたが説明している文脈では、これは通常のコールバック関数が (通常は) 非同期関数に渡される方法であり、これは node.js の一般的なパターンです (next とラベル付けされることもありますが、bananas
必要に応じて呼び出すことができます。これは単なる引数です)。
通常、最初の引数はerror
オブジェクト (すべてが計画どおりに進んだ場合は false になることが多い) であり、後続の引数は何らかの形式のデータです。
例えば:
function myAsyncFunction(arg1, arg2, cb) {
// async things
cb(false, { data: 123 });
}
この関数を使用します:
myAsyncFunction(10, 99, function onComplete(error, data) {
if (!error) {
// hooray, everything went as planned
} else {
// disaster - retry / respond with an error etc
}
});
Promiseは、このデザインパターンの代替手段であり、プロミスオブジェクトからmyAsyncFunction
例えば:
function myAsyncFunction2(arg1, arg2) {
return new Promise(function resolution(resolve, reject, {
// async things
resolve({ data: 123 });
});
}
この関数を使用します:
myAsyncFunction2(10, 99)
.then(function onSuccess(data) {
// success - send a 200 code etc
})
.catch(function onError(error) {
// oh noes - 500
});
基本的には同じものですが、書き方が少し異なります。約束特に広く支持されていないネイティブ形式ではありますが、トランスパイラ(私はバベル) をビルド ステップ中に実行すれば、ブラウザーでも十分に確実に実行されるはずです。
コールバックは、シミングやトランスパイルなしでもブラウザで常に機能します。