-1

与えられたコードを考慮する

function foo() {
    var bar = [];
    asyncRequest.get(function(data) {
        bar = data;
    });

    return bar;
}

前ではなく、コールバックからのデータで満たされているときにバーを返すにはどうすればよいですか? 50% のケースでは、return に到達する前にコールバックが終了し、空の配列が返されます。

4

1 に答える 1

2

前ではなく、コールバックからのデータで満たされているときにバーを返すにはどうすればよいですか?

できません。代わりに、関数が結果で呼び出すコールバックを受け入れるようにします。

function foo(callback) {
    asyncRequest.get(function(data) {
        // (More stuff here, presumably)
        callback(data);
    });
}

または、それが本当に単なるパススルーである場合 (「(More stuff here, おそらく)」と書いた場所は何もありません)、次のようになります。

function foo(callback) {
    asyncRequest.get(callback);
}
于 2013-11-12T11:31:13.070 に答える