问题标签 [promisekit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
412 浏览

ios - isKindOfClass 在 PromiseKit 中返回 nil 吗?

我的同事和我正在构建一个基于PromiseKit v1.5.3 的异步数据层。我们注意到,在某些情况下,当从传递给的块返回一个承诺(称为 X)时then,下一个then块实际上将 Promse X 作为参数传递给该块,而不是前一个承诺实际解析为的参数。对于大多数 Promise 实现来说,链接 thenable Promise 是一个非常重要的特性,所以我们非常惊讶。

经过一些相当长的调试会话后,我们发现问题出在 PromiseKit 中。在解析过程中,IsPromise调用未能将对象识别为promise,这实际上是一个简单的调用

[result isKindOfClass:[PMKPromise class]]

此调用返回nil,并执行了不正确的分支。这是来源

令人费解的是,我认为没有任何理由发生这种情况。我不认为这是 PromiseKit 中的错误,因为他们的代码似乎是正确的。我已经确认底层对象确实是一个 PMKPromise,因为它响应诸如value和之类的 promise 方法fulfilled。我什至使用调试器将它推过正确的分支,并从那里正确执行!

这是在给定行停止时来自一些测试的有趣日志。

鉴于isKindOfClass正在返回nil,听起来该对象没有响应消息......但它肯定是一个 NSObject。我很好奇这是否可能是一个奇怪的编译器设置或其他东西。如果相关,我目前将优化设置为无。有没有人见过这样的事情或知道发生了什么?我应该检查什么?

0 投票
0 回答
771 浏览

ios - 指向块指针的指针

我有一个使用 Promise (PMKPromise) 的方法,我想使用 Kiwi 库进行单元测试。

我的方法如下所示:

我想捕获并执行承诺完成块(称为“then”),并且我设法做到了(使用模拟的承诺):

我现在想做的是将这个丑陋的代码隐藏在一个类别中,以便将来在单元测试承诺时可以轻松使用。

我想将块“双指针”作为方法参数传递。

这可能是实现:

这就是我将如何使用它:

不幸的是,这段代码不起作用。踏入时,确实捕获了该块。但是一旦出来,在执行捕获的块的那一刻,它就为零。

0 投票
1 回答
571 浏览

ios - OCMock 存根块

我尝试存根这个 AFNetworking 方法并测试错误案例:

我的测试方法如下:

方法也[API getWeeklyEvents]使用 PromiseKit。这可能是一个问题吗?

我尝试使用,但它不起作用并使用旧的 OCMock 语法。

0 投票
3 回答
2435 浏览

ios - 使用 PromiseKit 强制顺序下载

我正在使用 PromiseKit 并希望强制顺序下载 JSON。JSON 的数量可能会发生变化。

我已经阅读有关链接的内容。如果我有固定数量的 3 次下载,那就没问题了。

但是,如果我想按顺序下载不断变化的下载次数怎么办?

这是我的 2 个 URL 的代码。我想知道如何dateUrlArray[i]通过数组迭代来做到这一点?

0 投票
4 回答
5784 浏览

swift - PromiseKit 与 Swift:终止承诺链

我正在尝试将 PromiseKit 与 Swift 一起使用。我对它不是很熟悉,而且似乎没有太多关于它与 Swift 一起使用的信息。

我似乎无法弄清楚如何终止一系列承诺。只要最后一个(终端)then块包含一个语句,一切都很好:

但是,如果我尝试添加另一个语句,编译器会抱怨:

显然,解决方案是返回另一个承诺,但在接线端子中没有意义。还有什么我可以做的吗?

0 投票
1 回答
1206 浏览

objective-c - 使用 PromiseKit 从 Objective C 到 Swift 的桥接

将 PromiseKit 2.0 与 Swift 1.2 一起使用,我正在尝试使用在 Swift 的 Objective C 中创建的 PMKPromise。

目标C代码:

Swift 代码(我尝试了许多变体,但都没有工作。这个最接近http://promisekit.org/PromiseKit-2.0-Released/给出的示例):

编译器错误:无法使用类型为“((AnyObject?)-> _)”的参数列表调用“then”

这也不起作用:

类似错误:“不能使用类型为 '((AnyObject?) -> AnyPromise)' 的参数列表调用 'then'”

0 投票
1 回答
737 浏览

ios - PromiseKit 2.0:链接承诺不传递参数

我用 Promise<T> 返回类型包装了我的 2 个 API 请求:

单独使用它们可以正常工作:

和:

then但是,当我链接它们时,永远不会填充第二个调用的令牌参数:

如果我打破这个闭包,我无法查看accessToken参数,只能查看外部completion闭包。requestAccessTokenWithEmail但是,如果我在函数内部中断,accessToken则在调用fulfill.

我对 PromiseKit 很陌生,所以如果我在做一些愚蠢的事情,请告诉我。

我正在使用 PromiseKit 2.0、Swift 1.2、Xcode 6.4

0 投票
1 回答
127 浏览

ios - 对不同类型的两个 Promise 使用相同的 then/catch/finally 块

我有以下操作:

我希望能够then/catch/finally为两者使用相同的块。我尝试了以下方法:

但这不会编译。是否有任何可行的解决方案(除了将代码从块移动到单独的函数,我想避免)?

0 投票
1 回答
739 浏览

xcode - PromiseKit 不能与 Swift 2 和 Xcode 7 一起编译

这是我在安装 PromiseKit 后尝试构建项目时看到的错误。

这是我的 PodFile 包含安装 PromiseKit 的内容。

我尝试在 PodFile 中使用以下语句,但它引发了更多编译错误,因此我尝试了上述语句。

0 投票
1 回答
518 浏览

ios - 然后在 Promisekit 中重新加载 tableview

我正在尝试使异步。使用 Promisekit 的承诺请求。我在 UITableViewController 的子类中有以下代码,用于使用从异步获取的数据重新加载 tableview。要求。

但是,以下语句 (self.tableView.reloadData()) 导致以下构建错误。

是不是因为我们不能在闭包内调用 reloadData() 。如果是这种情况,在异步请求完成后重新加载 tableview 的最佳做法是什么。