2

我试图通过一些在每个级别添加功能的类来级联承诺。

+ (AnyPromise *) method {
    return [SomeClass whichReturnsPromise]
    .then(^(id obj){
        // do stuff
        return obj;
    });
  }

不幸的是,这段代码在第二行引发了错误:

exc_bad_access (code=1 address=0x10)

(注意:只是调用return [SomeClass whichReturnsPromise]工作正常)

我已经搜索了 stackoverflow 的答案并尝试了上述代码的许多变体(可以在 javascript 中使用),但我一直收到同样的错误。我该如何解决?

4

2 回答 2

2

事实证明,在它被转换为返回承诺之前,它正在[SomeClass which ReturnsPromise]返回一个中断案例。nil将其更改为返回带有 value 的承诺nil。现在工作。

于 2016-07-20T00:19:32.660 回答
0

未经测试,我认为以下应该有效:

[self wait].then(^{
   return [SomeClass whichReturnsPromise];
}).then(^(id obj) {
   return obj;
});

我知道以下是 Swift,但如果你有一个,你可以在链AnyPromise中使用它:Promise<T>

someSwiftPromise().then { _ -> AnyPromise in
   // provided by `pod PromiseKit/SystemConfiguration`
   return SCNetworkReachability()
}.then { (obj: AnyObject?) in
   // AnyPromise always resolves with `AnyObject?`
}
于 2016-07-19T23:18:40.710 回答