Promise: Type '()' cannot conform to 'Thenable'

565 阅读1分钟

Swift中使用Promise遇到报错。

报错的代码:

func launch() {

    firstly {  // 这一行报错:Type '()' cannot conform to 'Thenable'
        getLoginToken()
    }
    .then { token in
        答案:因为这里还没来得及写下一步操作,未能返回一个thenable的值,结果错误信息关联到了上一行函数。
    }
}

func getLoginToken() -> Promise<String> {
    .value("token")
}

func getUserData() -> Promise<String> {
    .value("data")
}

两种解决方案:

func launch() {

    firstly {
        getLoginToken()
    }
    .then { token in
        getUserData()
        // 此处加上调用就能编译通过
    }
}
func launch() {

    firstly {
        getLoginToken()
    }
    .done { token in
        // 此处不用then,改用done的话也不会报错。因为那个错误只在then中触发🐶
    }
}