我正在关注异步/等待教程。即使我复制1:1的代码,也无法按预期工作。
这是一个函数,它接受水果名称作为参数并相应地返回数字。它是异步的,因此它应该返回一个Promise。
const getFruit = async(name) => {
const fruits = {
pineapple: 1,
apple: 2,
strawberry: 3
}
return fruits[name]
}
按预期工作,进行getFruit("apple").then(result => console.log(result))
会返回2。
然后,我有了第二个函数,该函数两次运行getFruit
函数以获取两个数字,等待结果,然后将它们组合在一起。从理论上讲。
const makeSmoothie = async() => {
const a = await getFruit("apple")
const b = await getFruit("strawberry")
const smoothie = [a, b]
return smoothie
}
但是实际上,console.log(makeSmoothie())
然后返回Promise { <pending> }
。为什么?
此外,我知道实际上是在不必要的情况下阻止脚本在检索b
之前获取值a
。这样看起来更简单。分配两个值然后执行const smoothie = await Promise.all([a, b])
也不起作用。结果相同。