Typescript async/await Promise调用差异
Typescript async / await Promise call difference?
如果在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();
像g();
一样直接调用异步函数会返回一个可以解析/拒绝的Promise
:
g().then((result) => {
doSomethingWith(result);
doSomethingElseWith(result);
});
在另一个Promise
中返回Promise
(这就是return f();
所做的)将使用内部promise的值来解析外部promise。
只要调用g()
就会启动g
正在做的任何事情,而不等待它的完成,从而丢弃结果。
用await
调用g
也需要封闭作用域是async
函数,概念上"等待"g
"返回"(实际上是解析/拒绝)。
使用await
关键字调用异步函数与不使用await
并使用Promise
调用异步函数的作用基本相同,只是语法更好。所以这个:
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)
);
相关文章:
- 函数在promise被解析后被调用,但Jasmine未通过测试.为什么?
- AngularJS和promise值在调用本地函数时的效果-未定义
- 多次调用方法后返回相同promise的模式
- 我如何防止错误“;未捕获(在promise中)DOMException:play()请求被对pause()的调用中断&”
- 多次调用promise函数,直到另一个promise函数满足条件
- bluebird promise catch() 没有使用 Promise.CancelError 调用内部函数
- 使用 Promise 在另一个函数中调用带有 Bluebird 承诺库的函数
- JavaScript Promise 解析并拒绝函数调用序列
- 使用promise或setTimeout确定延迟函数的调用顺序
- 使用Node中的Q promise库对值数组顺序调用/执行相同的函数;并返回带有结果的新数组/集合
- Javascript Promise().然后防止在执行第一个调用之前重新调用该函数
- 当使用promise时,为什么最后一个会被调用
- 在循环中调用Bluebird Promise函数
- 带有拒绝调用和抛出错误的Promise构造函数
- 如何在循环中调用Promise函数并保存其返回值
- 然后,在前一个完成之前调用 Promise
- 在另一个函数中调用promise函数时出错
- 在for循环结束时调用promise
- 链接2个异步调用(promise API)以串行运行
- ' fetch ', work with mode ' no-cors '不会调用promise.然后回调