Asynchronous 如何在typescript中从异步返回到正常执行
在TypeScript中,为了解析承诺,我使用wait关键字。 但是该关键字只允许存在于异步函数体中,异步函数体返回Promise。 在这种情况下,调用此异步函数的函数将需要解析返回值:Promise,这意味着我将再次需要wait关键字,并且该函数也必须定义为async 我错过了什么?你不必等待,你可以在承诺上使用它。 以下是您描述的场景:Asynchronous 如何在typescript中从异步返回到正常执行,asynchronous,typescript,promise,return,async-await,Asynchronous,Typescript,Promise,Return,Async Await,在TypeScript中,为了解析承诺,我使用wait关键字。 但是该关键字只允许存在于异步函数体中,异步函数体返回Promise。 在这种情况下,调用此异步函数的函数将需要解析返回值:Promise,这意味着我将再次需要wait关键字,并且该函数也必须定义为async 我错过了什么?你不必等待,你可以在承诺上使用它。 以下是您描述的场景: async function fn(): Promise<number> { return new Promise<number&
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);
将记录以下内容:
承诺{[[PromiseStatus]]:待定,[[PromiseValue]]:未定义}
要获得需要使用的值,请执行以下操作:
x.then(num => console.log(num));
如果不使用wait,则无法将异步操作的结果赋给变量。您不必等待,您可以在promise上使用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);
将记录以下内容:
承诺{[[PromiseStatus]]:待定,[[PromiseValue]]:未定义}
要获得需要使用的值,请执行以下操作:
x.then(num => console.log(num));
如果不使用wait,则无法将异步操作的结果赋给变量。我将wait理解为:等待promise解决或出现错误,然后展开对象以获取值。总之,您不能。一旦异步,总是异步的。可能重复的我理解为等待:等待,直到承诺解决或错误,并展开对象以获得值。总之,你不能。一旦异步,总是异步的。如果我从then子句返回,那么这是返回的值,还是存储在主体内的变量中,则可能重复?var x=fn2num.thennum=>{return num*2}这是赋值还是返回?检查我修改过的答案如果我从then子句返回,这是返回值,还是存储在正文中的变量中?var x=fn2num.thennum=>{return num*2}这会分配x还是返回?检查我修改过的答案