iOS (ObjC) PromiseKit - Return 承诺中的承诺
iOS (ObjC) PromiseKit - Return promise within promise
我正在尝试通过一些 类 级联承诺,这些承诺在每个级别添加功能。
+ (AnyPromise *) method {
return [SomeClass whichReturnsPromise]
.then(^(id obj){
// do stuff
return obj;
});
}
不幸的是,此代码在第二行引发错误:
exc_bad_access (code=1 address=0x10)
(注意:只需调用 return [SomeClass whichReturnsPromise]
即可)
我搜索了 Whosebug 的答案并尝试了上述代码的许多变体(在 javascript 中可以使用),但我总是遇到同样的错误。我该如何解决这个问题?
未经测试,我认为以下应该有效:
[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?`
}
原来 [SomeClass which ReturnsPromise]
的中断案例是 returning nil
在它被转换为 return 承诺之前。将其更改为 return 一个价值 nil
的承诺。现在可以使用了。
我正在尝试通过一些 类 级联承诺,这些承诺在每个级别添加功能。
+ (AnyPromise *) method {
return [SomeClass whichReturnsPromise]
.then(^(id obj){
// do stuff
return obj;
});
}
不幸的是,此代码在第二行引发错误:
exc_bad_access (code=1 address=0x10)
(注意:只需调用 return [SomeClass whichReturnsPromise]
即可)
我搜索了 Whosebug 的答案并尝试了上述代码的许多变体(在 javascript 中可以使用),但我总是遇到同样的错误。我该如何解决这个问题?
未经测试,我认为以下应该有效:
[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?`
}
原来 [SomeClass which ReturnsPromise]
的中断案例是 returning nil
在它被转换为 return 承诺之前。将其更改为 return 一个价值 nil
的承诺。现在可以使用了。