【问题标题】:iOS (ObjC) PromiseKit - Return promise within promiseiOS(ObjC)PromiseKit - 在承诺中返回承诺
【发布时间】:2016-07-19 23:10:31
【问题描述】:

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

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

不幸的是,这段代码在第二行抛出了一个错误:

exc_bad_access (code=1 address=0x10)

(注意:只需调用return [SomeClass whichReturnsPromise] 即可)

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

【问题讨论】:

    标签: ios objective-c promise promisekit


    【解决方案1】:

    原来[SomeClass which ReturnsPromise] 的中断案例在转换为返回承诺之前返回nil。将其更改为返回值为nil 的承诺。现在可以使用了。

    【讨论】:

      【解决方案2】:

      未经测试,我认为以下应该可以工作:

      [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?`
      }
      

      【讨论】:

      • [self wait] 来自哪个班级?我在自定义类上调用我的。
      • 哦,如果你在return [SomeClass whichReturnsPromise] 中添加一个分号; 会发生什么。你也遇到同样的错误吗?
      • 你的意思是如果我去掉.then 子句?没有错误。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 1970-01-01
      • 2016-01-06
      相关资源
      最近更新 更多