gpt4 book ai didi

ios - 自己的 Promisekit promise 没有正确响应

转载 作者:行者123 更新时间:2023-11-29 10:33:34 25 4
gpt4 key购买 nike

我写了自己的promise,想把它链起来,但是结果总是只有链中的第一个。我认为我在理解如何使用它们方面存在问题,但我找不到它。

我的代码:

-(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;}

首先我创建了 promise,然后链开始了,但是在创建 promise 之后它将只交付在 promise 初始化中传递的操作,而不是作为结果的链。

我尝试了你的目的,但还是遇到了问题:

-(void)test{
PMKPromise *test = (PMKPromise*)[self tryTheFirstPromiseWorkflow: [[TestCycleObject alloc] initWithDefaultValues]];
TestCycleObject *temp = (TestCycleObject*) test.value;
NSLog(@"Test: %i", temp.result);
}

这就是我对 promise 的称呼,但它的结果总是空的。 promise 在我的日志之后执行,但我无法获取结果。那么我怎样才能在我的方法中得到结果。我认为该方法必须停止,直到 promise 运行,我错了吗?

最佳答案

Promise 是不可变的,当您将 then 添加到 Promise 时,它​​不会修改原始 Promise 而是创建一个新的。

相反,您需要返回 block 的promise.then:

// note the `return here`
return promise.then(^(TestCycleObject *testCycleObject){
testCycleObject = [_addModul addSomething:testCycleObject];
NSLog(@"Result: %i, Fulfilled: %d", testCycleObject.result, promise.fulfilled);
return testCycleObject;

}).

关于ios - 自己的 Promisekit promise 没有正确响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28235108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com