【发布时间】:2018-03-06 23:54:39
【问题描述】:
我是 JavaScript/TypeScript Promise 返回类型的新手。
问题是我托管了一个 REST API 端点,它在内部调用来自不同服务的另一个 API,该服务使用 JS 请求模块返回一个 Promise 对象。
我想解开内部 API 承诺响应并创建一个新的普通 Typescript 对象,最后返回新修改的响应对象而不是 Promise。
这是描述我的问题的示例代码:
export class SampleClass {
public process(): NewResponse {
const newResponse: NewResponse = new NewResponse();
// invokeOtherAPI() call Returns a Promise by invoking a different endpoint
invokeOtherAPI().then(function (result) {
newResponse.propertyOne = result.propertyOne;
newResponse.propertyTwo = result.propertyTwo;
});
return newResponse;
}}
在这种情况下 process() 返回一个空值,尽管它在 then() 中被赋值。
这是我的 REST API 控制器类(缺少路径装饰器)
export class SampleController() {
const service: SampleClass = new SampleClass();
public get(): NewResponse {
return service.process();
}
}
问题:
- 始终从 Typescript API 返回 Promise 对象是否是一种好习惯?
- 有没有一种方法可以在内部解开 Promise 对象并从 API 返回非 Promise 对象?
感谢您对此的任何帮助。
【问题讨论】:
-
你可能想看看 async/await
-
如果你希望能够同步解包它们,你显然不明白 Promise 的用途。
-
@poke,是的,你是对的。我几乎不知道承诺是如何运作的。但是以下答案(第一个答案)解释得很好。现在事情对我来说已经清楚了。谢谢。
标签: javascript rest typescript promise