TypeScript
中,为了解决承诺,我使用了await
关键字。
但该关键字只允许存在于async functions
的正文中,并返回Promise<T>
。
在这种情况下,调用此async
函数的函数将需要解析返回值:Promise<T>
,这意味着我将再次需要await
关键字,并且该函数也必须定义为异步。
我错过了什么?
答案 0 :(得分:4)
您没有await
,您可以在承诺上使用then
这是您描述的场景:
async function fn(): Promise<number> {
return new Promise<number>((resolve, reject) => {
setTimeout(resolve.bind(null, 2), 1500);
});
}
async function fn2(num: number) {
return await fn() * num;
}
function fn3(num: number) {
fn2(num).then(num => {
console.log(`returned number: ${num}`);
})
}
fn3(10);
在1500
毫秒之后输出:
返回的号码:20
这样做:
var x = fn2(3).then(num => { return num * 2 });
console.log(x);
将记录类似:
承诺{[[PromiseStatus]]:“待定”,[[PromiseValue]]:undefined}
要获得您需要使用的值:
x.then(num => console.log(num));
如果不使用await
,则无法将异步操作的结果分配给变量。