gpt4 book ai didi

javascript - 返回链式 Promise 的函数的返回类型

转载 作者:行者123 更新时间:2023-11-28 10:45:43 25 4
gpt4 key购买 nike

我有一个返回链式 promise 的类,第一个 promise 的类型是 angular.IPromise<Foo> ,第二个 Promise 解析类型为 angular.IPromise<Bar>

为什么返回类型是doSomething angular.IPromise<Bar>

我本以为返回类型是 angular.IPromise<Foo>因为这是函数返回的第一件事。我知道then()返回一个 promise 并将其返回的内容包装到其响应中,但这仍然让我感到困惑。

import { Something } from '../somewhere';
import { Bar } from '../somewhereelse';

class Test {
doSomething(): angular.IPromise<Bar> {
return Something.getFoo() // getFoo() return type angular.IPromise<Foo>
.then(() => {
let x: Bar = {};
return x;
});
}
}

如有任何帮助,我们将不胜感激。如果需要,我非常乐意提供更多代码。

最佳答案

第一件事是:你不返回Something.getFoo() 。您返回Something.getFoo().then(...) 。即使使用 Promise 来执行异步任务,也会立即返回。

then()返回 angular.IPromise返回的 promise 不是 Something.getFoo() 中的 promise 但 Something.getFoo().then(...) 返回的那个

并作为提供给 then() 的回调返回 Bar对象:promise.ten(foo=>return new Bar())您的语句实际上返回 Promise<Bar>对象。

正如 @TsatsuyukiIshi 所说,这是 angular.IPromise.then 的类型定义:

then<X>(successCallback: (promiseValue: T) => IPromise<X>|X, ...): IPromise<X>

此方法是通用方法,其返回类型 ( X ) 取决于作为参数提供的类型 ( (promiseValue: T) => IPromise<X>|X )。

如果替换 X通过Bar这是显而易见的:

then(successCallback: (promiseValue: T) => IPromise<Bar>|Bar, ...): IPromise<Bar>

关于javascript - 返回链式 Promise 的函数的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43515769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com