1

如果在 Typescript 1.7 / ES7 我有三个功能:

async function f(): Promise<int> { /* ... */ }

async function g(): Promise<int> {
    return f();
}

async function h(): Promise<int> {
    return await f();
}

这些电话之间有什么区别:

g();    
h();    
await g();    
await h();    
4

1 回答 1

1

直接调用异步函数就像g();返回一个Promise可以解析/拒绝的函数:

g().then((result) => {
  doSomethingWith(result);
  doSomethingElseWith(result);
});

Promise在另一个中返回 a Promise(这就是这样return f();做的)将用内部承诺的值解决外部承诺。

只需调用g()将启动g正在执行的任何操作,而不是等待其完成,丢弃结果。

调用gwithawait要求封闭范围也是一个async函数,它在概念上“等待” g“返回”(实际上是解析/拒绝)。


使用关键字调用异步函数与不使用和使用 a 的await调用基本相同,只是语法更好。所以这:awaitPromise

async function f () { ... }

try {
  var result = await f();
  doSomethingWith(result);
} catch (error) {
  handle(error);
}

其实和这个是一样的:

async function f() { ... }

f().then(
  (result) => doSomethingWith(result),
  (error) => handle(error)
);
于 2015-11-29T19:52:52.497 回答