Node の cb() とは何ですか? 質問する

Node の cb() とは何ですか? 質問する

人々は 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
    });

基本的には同じものですが、書き方が少し異なります。約束特に広く支持されていないネイティブ形式ではありますが、トランスパイラ(私はバベル) をビルド ステップ中に実行すれば、ブラウザーでも十分に確実に実行されるはずです。

コールバックは、シミングやトランスパイルなしでもブラウザで常に機能します。

おすすめ記事