【发布时间】:2018-07-09 17:31:05
【问题描述】:
考虑这段代码:
async function callPromise ()
{
let num = await promiseEvenOdd()
console.log(num, "is odd")
}
function promiseEvenOdd()
{
return new Promise((resolve, reject) => {
let num = Math.floor(Math.random() * 2) + 1
console.log("num", num)
if (num % 2)
{
console.log("odd")
resolve(num)
}
else
{
console.log("even")
return promiseEvenOdd()
}
})
}
callPromise ()
如果数字是偶数我们调用一个新的承诺,当数字是奇数我们解决承诺,但在一些偶数之后,并且在解决之后,等待永远不会返回,
知道如何解决吗?
谢谢,
大佬
【问题讨论】:
-
你为什么还要在这里使用 Promise?没有异步操作。如果你只想要一个奇数随机数,你可以创建一个循环并直接返回随机数。
-
更详细地查看您的代码,更难弄清楚您要做什么。
Math.floor(Math.random() * 2) + 1在x和1 <= x < 3之间生成一个随机数,因此它可以生成的唯一值是1和2,因此其中唯一的奇数是1。所以,你想随机生成一个1?没有意义。 -
哈哈这只是一个关于承诺的例子,而不是关于随机的:-))
-
CRice 解决了我的问题,我认为当你问什么的时候最好隔离一下,这就是我创建这段假代码的原因
-
假代码不会在堆栈溢出问题上为您提供最佳答案,因为当您不向我们展示您的真实代码时,我们无法理解整个问题并为您提供解决问题的最佳方法以你从未想过要问的方式来解决问题。因此,为了对您甚至不知道要询问的事情提供最佳帮助,我们必须查看您的真实代码。
标签: javascript promise async-await resolve