1

私は簡単な非同期メソッドを持っています:

@Asynchronous
public void doSomething(Promise<int> something) {
    if(something == 0) {
        return;
    }

    ActivityHolder.someActivity();
    System.out.println("Current value: " + Integer.toString(something));
    doSomething(something--);
}

これは、私の特定の要件が実行可能かどうかを確認するために私が行っていることです。基本的に、特定のアクションをバッチで実行し、各バッチのメンバーを並行して実行する必要があります。私は本質的に別の活動をしています(別のクラスで):

@Activity
public void someActivity() {
    // Some stuff
}

私が得る出力は次のとおりです(私は100でdoSomethingと呼びます):

Current value: 100

その後、ワークフローの実行が失敗し、アクティビティが見つからなかったことを示すエラーが表示されます。なぜ見つからなかったのですか?それは最初の実行でどのように見つかりましたか?

4

2 に答える 2

3

いくつかのこと:

  1. promise 変数を渡すときは、それを呼び出しvariable.get()てその値を抽出します。

  2. アクティビティが見つからないというエラーが表示される場合、このアクティビティが実際に登録されているかどうかを確認しましたか? 最初にアクティビティ クラスを実行し、それらがログから実行されているかどうかを確認します。アクティビティが正常に登録されていることを確認してください。

  3. コードは次のようになっているはずです (Promise.asPromise()とを使用promise.get()):

    @Asynchronous
    public void doSomething(Promise<int> something) {
        if(something.get() == 0) {
            return;
        }
    
        ActivityHolder.someActivity();
        System.out.println("Current value: " + Integer.toString(something.get()));
        doSomething(Promise.asPromise(something.get()--));
    }
    
  4. ここでActivityHolderとは何ですか? someActivity() を含むクラスのクライアント実装ですか?

于 2012-07-15T07:10:16.187 に答える