【问题标题】:How to use Q.Promise<string> as string?如何使用 Q.Promise<string> 作为字符串?
【发布时间】:2015-09-10 00:45:11
【问题描述】:

我有函数返回字符串 Q.Promise

module test {

    export function promiseString (): Q.Promise<string> {
        var deferred = Q.defer<string>();
        deferred.resolve('someMessage');
        return deferred.promise;
    }

}

如何将返回值用作字符串?

选项 #1:

Q.fcall(promiseString).then(function (message: string) {
    //  compilation error about incompatible parameters     
});

选项 #2:

Q.fcall(promiseString).then(function (promise: Q.Promise<string>) {
    console.log(typeof promise);    //  output string
    //  but i can't use promise as string further
});

【问题讨论】:

  • 不要使用Q.fcall,那是为了回调!第二个选项也应该给出类型错误 - then 回调参数是 never 承诺。

标签: typescript promise q


【解决方案1】:

如果函数总是返回一个承诺(延迟或其他),那么您不必使用Q.fcall 调用它。只需调用:

promiseString().then(...)

【讨论】:

    猜你喜欢
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 2012-01-28
    • 1970-01-01
    相关资源
    最近更新 更多