Duc*_*les -3 javascript typescript
我目前有一个设置,我启动几个异步请求并在最后等待 Promise.all() 。然而 Typescript 仍然认为承诺尚未兑现。
例子:
const Promise1 = someAsync()
const Promise2 = someAsync()
const Promise3 = someAsync()
await Promise.all([Promise1, Promise2, Promise3])
console.log(Promise1.someData) // is a problem
Run Code Online (Sandbox Code Playgroud)
我想我可以在控制台日志中再次等待 Promise1,但这似乎有点不完整,有什么想法吗?或者我在 console.log 点解析 Promise1 是错误的吗?
您需要等待 的返回值中的解析值Promise.all()。APromise本身永远不会有someData属性:
<script type="module">
function someAsync () {
const result = {someData: Math.random()};
return Promise.resolve(result);
}
const promise1 = someAsync();
const promise2 = someAsync();
const promise3 = someAsync();
await Promise.all([promise1, promise2, promise3])
console.log(promise1.someData); /* Will log `undefined` because:
~~~~~~~~
Property 'someData' does not exist on type 'Promise<{ someData: number; }>'.(2339) */
// Instead, await the resolved values:
const [resolved1, resolved2, resolved3] = await Promise.all([promise1, promise2, promise3])
console.log(resolved1.someData);
//^? (property) someData: number
</script>Run Code Online (Sandbox Code Playgroud)