私は自分の約束を書き、それを連鎖させたいと思っていますが、結果は常に連鎖の最初のものだけです。私はそれらをどのように使用するかについて私の側に理解の問題があると思いますが、私はそれを見つけることができません。
私のコード:
-(PMKPromise*)tryTheFirstPromiseWorkflow:(TestCycleObject *)testCycleObject{
PMKPromise *promise = [PMKPromise new:^(PMKPromiseFulfiller fulfill, PMKPromiseRejecter reject) {
fulfill(PMKManifold([_addModul addSomething:testCycleObject]));
}];
promise.then(^(TestCycleObject *testCycleObject){
testCycleObject = [_addModul addSomething:testCycleObject];
NSLog(@"Result: %i, Fulfilled: %d", testCycleObject.result, promise.fulfilled);
return testCycleObject;
}).then(^(TestCycleObject * testCycleObject){
testCycleObject = [_multiModul multiSomething:testCycleObject];
NSLog(@"Result: %i, Fulfilled: %d", testCycleObject.result, promise.fulfilled);
return testCycleObject;
}).then(^(PMKPromiseFulfiller fulfill, PMKPromiseRejecter reject){
fulfill(testCycleObject);
});
return promise;}
最初にプロミスを作成すると、チェーンが開始されますが、プロミスの作成後は、プロミスの初期化で渡されたアクションのみが配信され、結果としてチェーンは配信されません。
私はあなたの目的を試しましたが、それでも問題が発生します:
-(void)test{
PMKPromise *test = (PMKPromise*)[self tryTheFirstPromiseWorkflow: [[TestCycleObject alloc] initWithDefaultValues]];
TestCycleObject *temp = (TestCycleObject*) test.value;
NSLog(@"Test: %i", temp.result);
}
これがプロミスと呼ばれる方法ですが、その結果は常に空です。プロミスはログの後に実行されますが、結果を取得できません。では、どうすれば私のメソッドで結果を得ることができますか。プロミスが実行されるまでメソッドを停止する必要があると思いましたが、間違っていますか?