0

ここで尋ねられた人のように(しかし、別の関数を呼び出すための彼の解決策)https://stackoverflow.com/a/10796326/315200 ...呼び出しない関数を持つことが可能かどうか知りたい2 番目の関数は、非同期要求の応答時ですが、単にreturn非同期要求が応答したときです。

このようなものかもしれません:

function callToFacebook() {
    var fbResponse;

    FB.api('/me', function (response) {
        fbResponse = response;
    });

    return fbResponse; //Will return undefined because CallToFacebook is async
}

別の関数を呼び出さずに、それは何らかの方法で可能ではありませんか??

私が達成しようとしているのはobject、FB などの非同期 Web サービスからの応答を返す、いくつかのパラメーターを使用して呼び出すことができる関数を 1 つ持つことです。

4

2 に答える 2

2

いいえ、できません。

非同期操作から返される値を返すことはできません。

考えてみてください。10 人に 1 マイルのランニング コンテストを開催するように伝えます。彼らは今開始し、1 分で終了します +- しかし、あなたは答えを知りたいと思っています。

于 2012-06-19T10:23:42.023 に答える
2

要するに、いいえ。非同期関数が意味のある値を同期的に返すようにすることはできません。これは、その時点ではその値が存在しないためです (バックグラウンドで非同期的に構築されるため)。

ただし、非同期操作の「潜在的な戻り値」を表すPromiseオブジェクトを返し、 done()などを使用してそのオブジェクトに関数をバインドすることはできます。そうすれば、関数はリターン セマンティクスを取得し (制御フローをコールバックにチェーンする必要はありません)、非同期のままになります。

于 2012-06-19T10:27:42.680 に答える