0

私はウェブ全体を検索しましたが、おそらく私は間違ったことを尋ねているだけで、Googleは私に間違った答えを返します:)

私は、API スーツをテストするために使用される AJAX ベースのツールを持っています (目的は多少似ていますが、soapUI のような多くの利用可能なツールの 1 つではありません)。開発者がバックエンド コードを記述しながら操作できる、多くの「事前にパッケージ化された」API テンプレートがあります。

ここまではうまくいきました。ユーザーがテストする API を選択すると、必要に応じてリクエストのテキストを変更し、API を起動します。結果が表示されます。繰り返しますが、この部分は同期的または非同期的に非常に簡単に実行できます。

この基本的な機能を使い終えた後、単一の API リクエスト以上のことを実行できるユーザー提供のコードは非常に単純でeval()あり、フロー テストを実行できるツールを効果的に構築できることに気付きました (したがって、数行を記述できます)。ログインし、ユーザーの詳細を取得し、他の API を実行するための「コード」の一部)。

私のツールで定義された単純な API 呼び出し関数があり、基本的に 1 つのパラメーター (呼び出される API の名前) を受け入れます (残りのデータはさまざまなフォーム データから取得されます)。明らかに、ユーザーの JS コードでできることにはほとんど制限がありません。たとえば、ループ内で API を呼び出すことができます。

ここで障害物にぶつかっています。API が完了するまでユーザーのスクリプトの実行を停止する必要があるため、現在、ブロックしている AJAX 呼び出しを介して API 要求を実行する必要があります。API の性質上、次の API を実行する前に、前の API が結果を返す必要があることがよくあります (例としては、「ログイン」API 呼び出しを待機する必要がある「ユーザーの詳細を取得する」などがあります)。完了します)。

ノンブロッキング AJAX を使用して、コールバック関数が呼び出されたら、コードを「カット」して「残りの部分」を実行しようとしましたが、これが一般的なケースでうまく機能しないことは簡単にわかります。 「カット」は、if-elseまたはループのように、たまたまコード ブロック内にあります。

手動で JS を非常に迅速に解析して実行しようとすると、独自の VM を作成する際の一般的な問題になります。これは、私がこれに費やす労力の範囲外であることは間違いありません (1 年 2 年間、細心の注意を払う価値があると判断しない限り、でもそのためには、おそらく宝くじに当たる必要があるでしょう)。

私の質問は、ユーザーがシングルスレッド実行のように実行される「単純な」線形コードを提供できるようにしながら、スクリプトの実行を停止する (できればエレガントな?) 方法はありますか?

4

0 に答える 0