await (asyn c (): Type => {return value}) () :: error Не удается найти имя 'await'.ts (2304) - PullRequest
0 голосов
/ 28 мая 2020
// 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
})();

Я попытался обернуть ожидание внутри другого набора изогнутых скобок, но все равно не работает. да, я знаю, что могу объявить функцию, а затем вызвать ее, как обычно, но я бы предпочел, чтобы это было так. если это невозможно, то я go вернусь к обычному режиму.

Я не знаю полностью, что делает () в таких случаях, но я предполагаю, что он возвращает объект внутри. можно ли так использовать async / await? если возможно, также хотелось бы узнать больше о том, как () работает в подобных случаях.

код работает на Deno
edit: люди говорят, что "await необходимо использовать внутри asyn" c block "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

Ответы [ 2 ]

1 голос
/ 28 мая 2020

await может только в блоке asyn c. Убедитесь, что внешнее ожидание также находится в блоке asyn c, или вы можете сохранить обещание в 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 }))
1 голос
/ 28 мая 2020

Ожидание должно вызываться внутри асинхронной c функции.

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

Теперь вы можете вызвать функцию aFunc, чтобы она работала

...