繁体   English   中英

await (async ():Type => {return value})():: error 找不到名称'await'.ts(2304)

[英]await (async ():Type => {return value})() :: error Cannot find name 'await'.ts(2304)

// Does not work - Cannot find name 'await'.ts(2304)
let someVariable = await (async ():someType => {
   // i need to use await inside here so i need it async
   return someValue;
})();

// does work, but not async.
let someVariable2 = (():someType => {
   // cant use await inside
   return someValue
})();

我尝试将 await 包裹在另一组弧形括号内,仍然无法正常工作。 是的,我知道我可以声明一个 function 然后像往常一样调用它,但我宁愿这样。 如果不可能,则将 go 恢复正常。

我不完全知道()在这种情况下会做什么,但我假设它会返回 object 内部。 可以像这样使用 async/await 吗? 如果可能的话,还想了解更多关于()在这种情况下如何工作的信息。

代码在 Deno 上运行
编辑:人们说“必须在异步块内使用等待” Deno 具有顶级等待。

澄清。

// this is top-level
async function somefunc() {}
await somefunc(); // this WORKS on deno.

问题是let var = await(async () => {})()创建了上述错误,我试图找到一种方法来解决这个问题,而不是声明然后等待它

编辑: https://github.com/microsoft/TypeScript/issues/38483

Await 必须在异步 function 中调用。

 const aFunc = async () =>{ let someVariable = await (async ():someType => { const someValue = await asyncFunc() return someValue; })(); // Now you get the value console.log(someVariable) } aFunc()

现在您可以调用aFunc function 使其工作

await只能在异步块内。 确保外部 await 也在异步块中,或者您可以将 promise 保存在someVariable中。


let someVariable = (async ():someType => {
   return someValue;
})();

someVariable.then((result) => {
 // result contains whatever u returned in the async block.
})

 const someVariable = (async () => { const result = await Promise.resolve('Hey there;') return result. })() someVariable.then(result => console.log({ result }))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM