0

私がこれらの2つの機能を持っていると仮定します:

function complex() {
        setTimeout(function() {
                console.log('complex setTimeout');
        }, 1000); // assume this value is random
        function subFun() {
                console.log('complex subFun');
                setTimeout(function() {
                        console.log('complex subFunction setTimeout');
                }, 2000); // assume this value is random
        }
        subFun();
}

function simple() {
        console.log('simple');
}

私がそれらを書いていなかったと仮定します-それらはサードパーティです。今、私はそれらを同期的に呼び出して取得したいと思います:

complex subFun
complex setTimeout
complex subFunction setTimeout
simple

問題は、コールバック(サードパーティの関数)を使用できないことです。また、約束やイベントを使用することはできません(同じ理由)。async関数のアリティのため、stepモジュールは使用できません。後で(およびネストされたすべてのサブ関数を)同期的に呼び出すsimple()にはどうすればよいですか?complex()そしてJavaScriptはsuxですか?:)

4

1 に答える 1

1

[非同期処理] の後で simple() を同期的に呼び出すにはどうすればよいでしょうか?

できません。それが非同期同期の定義です。

フィードバックのない非同期スクリプトがある場合、次の 2 つの選択肢しかありません。

  • などを介してスクリプトの結果をポーリングし、それが到着したことを検出した後にsetInterval実行しますsimple()
  • そのサードパーティをより良いサードパーティに置き換える
于 2013-03-03T15:38:28.300 に答える