2

nodejsでフロー制御に軽快に使用する方法を理解しようとしていますが、実際にどのように機能するかを理解するのに苦労しており、それを説明するドキュメントが実際にはありません(見つけることができます)

たとえば、ドキュメントから次のコードを取得します。

_.parallel([
    function (callback) {
        setTimeout(function () {
            console.log('one');
            callback();
        }, 25);
    },
    function (callback) {
        setTimeout(function () {
            console.log('two');
            callback();
        }, 0);
    }
]);

関数が取るコールバック引数を理解するのに苦労しています。実際に何がコールバックとして渡されますか? 次の機能は?その場合、2 番目 (および最後) の関数も callback() を実行するのはなぜですか? 実行する関数がこれ以上ない場合、これのポイントは何ですか? ありがとう!

私は自分の小さなテストを行い、コールバックを取り出しました:

var flow = require('nimble');

flow.parallel([
function() {
    setTimeout(function() {
        console.log('this happens');
    }, 3000);
},
    function() {
        setTimeout(function() {
        console.log('and this happens at the same time');
    }, 3000);
}
]);

コードは、コールバックを渡した場合と同じように機能するため、コールバック引数が何をするのか本当に理解できていないように感じます。

4

1 に答える 1

1

関数が取るコールバック引数を理解するのに苦労しています。実際にコールバックとして渡されるものは何ですか?

コールバックは、非同期操作が終了したという事実を確認するためにここにあります。コールバックが何をするかを知る必要はなく、引数として受け入れるものだけを知る必要があります。

それは継続渡しと呼ばれます。=> function と callback を引数として指定すると、一度実行されたコールバックは、制御フローを担当するものは何でも「継続」します。

最終的に、非同期操作が失敗した場合にエラーを生成するために、最初の引数としてエラー オブジェクトをコールバックに渡す場合があります。この問題の詳細については、npm の async パッケージを参照してください。

于 2013-12-31T18:02:19.110 に答える