问题标签 [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.
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。我很好奇这是否可能是一个奇怪的编译器设置或其他东西。如果相关,我目前将优化设置为无。有没有人见过这样的事情或知道发生了什么?我应该检查什么?
ios - 指向块指针的指针
我有一个使用 Promise (PMKPromise) 的方法,我想使用 Kiwi 库进行单元测试。
我的方法如下所示:
我想捕获并执行承诺完成块(称为“then”),并且我设法做到了(使用模拟的承诺):
我现在想做的是将这个丑陋的代码隐藏在一个类别中,以便将来在单元测试承诺时可以轻松使用。
我想将块“双指针”作为方法参数传递。
这可能是实现:
这就是我将如何使用它:
不幸的是,这段代码不起作用。踏入时,确实捕获了该块。但是一旦出来,在执行捕获的块的那一刻,它就为零。
ios - OCMock 存根块
我尝试存根这个 AFNetworking 方法并测试错误案例:
我的测试方法如下:
方法也[API getWeeklyEvents]
使用 PromiseKit。这可能是一个问题吗?
我尝试使用它,但它不起作用并使用旧的 OCMock 语法。
ios - 使用 PromiseKit 强制顺序下载
我正在使用 PromiseKit 并希望强制顺序下载 JSON。JSON 的数量可能会发生变化。
我已经阅读了有关链接的内容。如果我有固定数量的 3 次下载,那就没问题了。
但是,如果我想按顺序下载不断变化的下载次数怎么办?
这是我的 2 个 URL 的代码。我想知道如何dateUrlArray[i]
通过数组迭代来做到这一点?
swift - PromiseKit 与 Swift:终止承诺链
我正在尝试将 PromiseKit 与 Swift 一起使用。我对它不是很熟悉,而且似乎没有太多关于它与 Swift 一起使用的信息。
我似乎无法弄清楚如何终止一系列承诺。只要最后一个(终端)then
块包含一个语句,一切都很好:
但是,如果我尝试添加另一个语句,编译器会抱怨:
显然,解决方案是返回另一个承诺,但在接线端子中没有意义。还有什么我可以做的吗?
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'”
ios - PromiseKit 2.0:链接承诺不传递参数
我用 Promise<T> 返回类型包装了我的 2 个 API 请求:
单独使用它们可以正常工作:
和:
then
但是,当我链接它们时,永远不会填充第二个调用的令牌参数:
如果我打破这个闭包,我无法查看accessToken
参数,只能查看外部completion
闭包。requestAccessTokenWithEmail
但是,如果我在函数内部中断,accessToken
则在调用fulfill
.
我对 PromiseKit 很陌生,所以如果我在做一些愚蠢的事情,请告诉我。
我正在使用 PromiseKit 2.0、Swift 1.2、Xcode 6.4
ios - 对不同类型的两个 Promise 使用相同的 then/catch/finally 块
我有以下操作:
我希望能够then/catch/finally
为两者使用相同的块。我尝试了以下方法:
但这不会编译。是否有任何可行的解决方案(除了将代码从块移动到单独的函数,我想避免)?
xcode - PromiseKit 不能与 Swift 2 和 Xcode 7 一起编译
这是我在安装 PromiseKit 后尝试构建项目时看到的错误。
这是我的 PodFile 包含安装 PromiseKit 的内容。
我尝试在 PodFile 中使用以下语句,但它引发了更多编译错误,因此我尝试了上述语句。
ios - 然后在 Promisekit 中重新加载 tableview
我正在尝试使异步。使用 Promisekit 的承诺请求。我在 UITableViewController 的子类中有以下代码,用于使用从异步获取的数据重新加载 tableview。要求。
但是,以下语句 (self.tableView.reloadData()) 导致以下构建错误。
是不是因为我们不能在闭包内调用 reloadData() 。如果是这种情况,在异步请求完成后重新加载 tableview 的最佳做法是什么。