如何快速从 Promise 返回值 [重复]

Posted

技术标签:

【中文标题】如何快速从 Promise 返回值 [重复]【英文标题】:How to return value from Promise in swift [duplicate] 【发布时间】:2021-02-20 10:45:03 【问题描述】:

我有这样的功能

    func fetchPokemons() -> [Pokemon] 
    var pokemons : [Pokemon] = []
    service.fetchPokemons().done (newPokemons) in
        pokemons += newPokemons.pokemons!
        print(pokemons)
    .catch  (error) in
        print(error)
    
    print(pokemons)
    return pokemons

我需要获取口袋妖怪,然后将它们放入数组中。我的问题很明显。 Promise 是异步的,这就是我的函数返回空数组的原因。 .then 函数用于返回另一个 Promise,而 .done 返回 Void。那么我应该如何编写一个完成处理程序来返回填充的对象数组呢?

【问题讨论】:

这能回答你的问题吗? Returning data from async call in Swift function 是的。感谢您的回答,很抱歉我的问题很糟糕 【参考方案1】:

这是可以返回UIImage类型的promise的函数。

func getImageWithPromise() -> Promise<UIImage> 
    return Promise<UIImage>(on: .global(qos:.background),  (fulfill, reject) in
        URLSession.shared.dataTask (with: url)  data, response, error in
            if error != nil 
                reject(error)
                return
            
            fulfill(data)
        
    )

【讨论】:

以上是关于如何快速从 Promise 返回值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在异步函数内部,从回调函数返回值返回 Promise(undefined) [重复]

从另一个函数中的promise内部返回一个值[重复]

如何将promise的返回值推送到数组中? [重复]

从另一个函数中的promise内部返回一个值[重复]

如何使用 fetch 从 Promise 回调中返回返回值? [复制]

如何从Promise的返回值中取到[[PromiseValue]] ?