问题标签 [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 回答
436 浏览

ios - 轮询异步任务,然后等待 1 次成功或所有响应被拒绝

PromiseKit 版本:4.0

Xcode 版本: 8.3.2

我最近开始使用 PromiseKit。

实际上,我正在创建一个轮询 HTTP 请求,该请求返回“已完成”或“未完成”。

我必须在每 1 秒后继续进行 HTTP 调用,持续 5 秒。

我需要实现的是,如果任何 1 个电话给我完成状态,我将返回已完成(“完成”)。但是如果我所有的请求都给了我“notCompleted”的响应,我需要返回reject("notCompleted")

我怎样才能做到这一点?

有没有更好的方法在 PromiseKit 中编写上述代码。

0 投票
0 回答
638 浏览

ios - 字符 1461 周围未转义的控制字符

我正在访问参数下的 Web 服务库。

但我无法访问服务。我正在低于错误。

有人有想法吗?

0 投票
1 回答
699 浏览

swift - PromiseKit 捕获多个参数

我正在将 PromiseKit 集成到我们当前的系统中,我需要catch链的一部分来使用 2 个参数。我希望使用我的捕获error, fetcher而不是错误。做这个的最好方式是什么?

我曾考虑将 包含fetcheruserInfo字典的一部分NSError,但如果可能的话,我更喜欢将其作为单独的参数。

编辑 - 更多信息:

这是我正在使用的适配器。fetcheronError从我现有的系统中返回的。

0 投票
2 回答
800 浏览

swift - 轮询 url,直到响应为某个值

我刚刚开始使用 Swift(一种非常好的语言)进行编码,并且我正在尝试制作一个需要用户使用第三方登录服务登录的应用程序。

身份验证流程的基本内容如下所示: 1. 用户输入 ssn(瑞典人编号)并按 Enter。
2. POST 到返回 json blob 的 url:

3. 轮询使用transactionId来自步骤 2的 url。
此 url 返回一个 json blob:

一旦用户使用移动身份验证应用程序授予访问权限,此 url 将返回更复杂的 json blob。然后state将更改为“已完成”。4. 从可以从步骤 3 中的 blob 获得的最终 url 接收身份验证令牌(一旦状态为“COMPLETED”
。5.???
6.获利!

所以我的“问题”是我无法真正弄清楚(以我有限的快速知识)如何执行第 3 步。轮询 url 直到状态为“COMPLETED”(或者第 2 步的过期时间已通过,它应该失败)。

我在 javascript 中做了一个 hacky 尝试来尝试该服务,它看起来像这样:

我如何在 swift 3 中使用 Alamofire 和 Promisekit 做到这一点?

0 投票
1 回答
2082 浏览

ios - 无法将 Promise (_,_) -> DataRequest 类型的返回表达式转换为返回类型 Promise>

无法将 Promise ( , ) -> DataRequest 类型的返回表达式转换为返回类型 Promise>

我的功能是

我在 return Promise 行上收到此错误。我该如何转换?

我尝试将我的返回签名更改为Promise<DataRequest, Error并在该行上得到一个编译错误,即 Promise 过于专业化了 2 个参数而不是 1 个参数。

0 投票
1 回答
764 浏览

swift - 将递归异步函数转换为 Promise

我有一个递归的异步函数,它使用 REST api 和完成处理程序向 Google Drive 查询文件 ID:

在这里,query设置为返回nextPageTokenandfiles(id)字段,service是 的一个实例GTLRDriveService,并且FileIdCompletionHandler只是一个typealias

我已经阅读了如何将异步函数转换为承诺(如在这个线程中),但我不知道如何将其应用于递归的异步函数。我想我可以将整个方法包装为Promise

但是,我希望更直接一些:

那么:当我需要进行另一个异步调用时,我会怎么做executeQuery

0 投票
1 回答
23187 浏览

swift - 错误:无法使用 Swift + PromiseKit 将类型 '() -> ()' 的值转换为闭包结果类型 'String'

我是 Swift 中的 Promise 的新手,我使用 PromiseKit 尝试在操场上创建一个非常简单的响应并尝试使用它。我有以下代码:

但是我收到以下错误:

0 投票
1 回答
38 浏览

swift - 创建一个立即解决的“空”承诺

有没有捷径可以做到这一点...

...其中 t 是 T 并且承诺的类型是Promise<T>

0 投票
2 回答
1247 浏览

swift - 如何确保两个“开始”的异步任务在运行另一个任务之前完成?

我正在设置一个应用程序,promiseKit用作订购异步任务的一种方式。我目前有一个设置,可确保按顺序完成两个异步函数(称为promises)(我们称它们为 1 和 2),并且按顺序完成另一组函数(3 和 4)。大致:

每个firstly都通过确保第一个在第二个可以启动之前完成来确保其中的功能的顺序。使用两个单独firstly的 ' 确保 1 在 2 之前完成,3 在 4 之前完成,并且(重要的是)1 和 3 大致在同一时间开始(在 开始时viewDidAppear())。这是故意这样做的,因为 1 和 3 彼此不相关,并且可以同时启动而没有任何问题(2 和 4 也是如此)。问题是有第五个promise,我们称之为promiseFive必须2 和4 完成运行。我可以链接一个firstly确保顺序是 1,2,3,4,5,但由于 1/2 和 3/4 的顺序不相关,以这种方式链接它们会浪费时间。我不确定如何设置它,以便promiseFive仅在完成 ​​2 和 4 时运行。我曾想过在 2 和 4 结束时调用经过布尔检查的函数,确保另一个firstly已完成然后调用promiseFive但是,由于它们是异步开始的(1/2 和 3/4),因此promiseFive使用这种方法可能会同时被两者调用,这显然会产生问题。解决此问题的最佳方法是什么?

0 投票
1 回答
176 浏览

swift - 创建一个包装可执行代码的 void Promise

我需要使用PromiseKit将一些代码包装在一个承诺中。我可以像这样创建一个无效的承诺:

但这立即解决了,因为我想返回一个 void 承诺,该承诺包装了一些作为正常承诺链的一部分执行的代码。我可以做这个:

但这感觉有点笨拙。

有没有更简洁的方法来生成执行代码的无效承诺?