在 Typescript 中正确使用 Async
Correct Usage of Async in Typescript
打字稿中 async
关键字的正确用法是什么?我的理解是只允许在函数体中使用await
。具体来说,
async returnPromise() : Promise<any> {}
export const interfaceFunction() = async () {
return returnPromise();
}
// Usage in another module
const returnValue = await interfaceFunction();
在这种情况下是否明确要求将 interfaceFunction
声明为 async
?无论是否使用 async 关键字,代码都可以工作(并且 return 类型在这两种情况下都保持为 Promise
)。
我不是假装要完整的答案。
但另一个选择是 async
保证函数 returns 一个承诺,并使结果比'able。当只有部分功能可等待时,它会有很大帮助。请参阅下面的示例。
function nPromice(){
return Promise.resolve(2);
}
async function n(){
if(Math.random() > 0.5 ){
return await nPromice();
} else {
return 1;
}
}
n().then(x => console.log(x));
您的理解是正确的!
Is the interfaceFunction
explicitly required to be declared as async
in this case?
没有。如果你只是 return 一个 Promise
你不需要将方法标记为 async
。如果你想await
其中的东西,请标记一个方法async
。
打字稿中 async
关键字的正确用法是什么?我的理解是只允许在函数体中使用await
。具体来说,
async returnPromise() : Promise<any> {}
export const interfaceFunction() = async () {
return returnPromise();
}
// Usage in another module
const returnValue = await interfaceFunction();
在这种情况下是否明确要求将 interfaceFunction
声明为 async
?无论是否使用 async 关键字,代码都可以工作(并且 return 类型在这两种情况下都保持为 Promise
)。
我不是假装要完整的答案。
但另一个选择是 async
保证函数 returns 一个承诺,并使结果比'able。当只有部分功能可等待时,它会有很大帮助。请参阅下面的示例。
function nPromice(){
return Promise.resolve(2);
}
async function n(){
if(Math.random() > 0.5 ){
return await nPromice();
} else {
return 1;
}
}
n().then(x => console.log(x));
您的理解是正确的!
Is the
interfaceFunction
explicitly required to be declared asasync
in this case?
没有。如果你只是 return 一个 Promise
你不需要将方法标记为 async
。如果你想await
其中的东西,请标记一个方法async
。