标签: thenable

当我尝试使用 Promise<String> 函数时,PromiseKit 6.13.1 无法符合“Thenable”

我发现在一个看似简单的情况下使用 PromiseKit 6.13.1 非常困难。我有以下两个返回 a 的函数,Promise<String>但我似乎无法找到一种使用 ```firstly{}.then{} 语法来使用它们的方法:

 func promiseGetJWTToken() -> Promise<String> {
    return Promise<String> { seal in
        let error: Error = NSError(domain: "", code: 2000)
        getJWTToken { tokenJWT in
            guard let tokenJWT = tokenJWT else {
                seal.resolve(.rejected(error))
                return
            }
            seal.resolve(.fulfilled(tokenJWT))
        }
    }
}

func promiseGetBEToken() -> Promise<String> {
    return Promise<String> { seal in
        let error: Error = NSError(domain: "", code: 2000)
        getBEToken { result in
            switch result {
            case .success(let response):
                guard let tokenBE = response.token else …
Run Code Online (Sandbox Code Playgroud)

promise ios swift promisekit thenable

5
推荐指数
2
解决办法
1663
查看次数

在 JavaScript ES6 中,thenable 接受如何解析和拒绝?

我认为迄今为止我采取的一项原则是:

Promise 是一个 thenable 对象,因此它接受消息then,或者换句话说,某些代码可以使用then履行处理程序调用该对象上的方法,该对象是接口的一部分,这是“下一步要采取的步骤” ,以及拒绝处理程序,这是“如果没有成功则采取的下一步”。通常最好在履行处理程序中返回一个新的 Promise,以便其他代码可以在其上“链接”,也就是说,“我还将告诉您下一步的操作,以及如果失败则下一步的操作,所以当你完成后给他们中的一个打电话。”

然而,在JavaScript.info Promise 博客页面上,它说履行处理程序可以返回任何“thenable”对象(这意味着类似 Promise 的对象),但这个 thenable 对象的接口是

.then(resolve, reject) 
Run Code Online (Sandbox Code Playgroud)

这与通常的代码不同,因为如果履行处理程序返回一个新的 Promise,则该 thenable 对象具有接口

.then(fulfillmentHandler, rejectionHandler)
Run Code Online (Sandbox Code Playgroud)

所以该页面上的代码实际上得到了 aresolve并调用resolve(someValue)。如果fulfillmentHandler不只是 的另一个名称resolve,那么为什么 thenable 会有所不同?

该页面上的可用代码:

javascript es6-promise thenable

5
推荐指数
1
解决办法
1327
查看次数

标签 统计

thenable ×2

es6-promise ×1

ios ×1

javascript ×1

promise ×1

promisekit ×1

swift ×1